मैं पढ़ रहा हूँ साइमन थॉम्पसन के हास्केल: कार्यात्मक प्रोग्रामिंग की क्राफ्ट, और मैं यह कैसे काम करता है सोच रहा हूँ:यह हास्केल कैसे कार्य समझ कार्य का उपयोग कर क्रमपरिवर्तन की गणना करने के लिए काम करता है?
perms [] = [[]]
perms xs = [ x:ps | x <- xs , ps <- perms (xs\\[x]) ]
मैं समझ कैसे कि perms(xs\\[x])
कार्य करने के लिए माना जाता है नहीं कर पा रहे। एक दो तत्व सूची का पता लगाने पता चलता है:
perms [2,3]
[ x:ps | x <- [2,3] , ps <- perms ([2,3] \\ [x]) ] exe.1
[ 2:ps | ps <- perms [3] ] ++ [ 3:ps | ps <- perms [2] ] exe.2
...
कैसे आप exe.2
करने के लिए exe.1
से जाते हैं?
डाउनवोट क्यों? –
आप जानते हैं कि, मैं मूर्ख हूँ। सूची की समझ के बारे में मैंने देखा पहला वह निशान था। ट्रेस सूची के सभी तत्वों को एक बार में बनाए जाने के लिए दिखाता है। मुझे नहीं पता कि मैं क्यों सोच रहा था कि तीसरी पंक्ति नीचे बनाई गई सूची का दूसरा तत्व था। –