में "सभी" का प्रदर्शन मुझे हैकेल का लगभग कोई ज्ञान नहीं मिला और कुछ परियोजना यूलर समस्याओं को हल करने का प्रयास किया। Number 5 सुलझाने जब मैं (1..10 के लिए) इस समाधान लिखाहैकेल
--Check if n can be divided by 1..max
canDivAll :: Integer -> Integer -> Bool
canDivAll max n = all (\x -> n `mod` x == 0) [1..max]
main = print $ head $ filter (canDivAll 10) [1..]
अब मुझे पता चला, कि all
इस तरह कार्यान्वित किया जाता है:
all p = and . map p
नहीं इसका मतलब, शर्त है है हर तत्व के लिए जाँच की? क्या इस स्थिति के पहले झूठे परिणाम पर तोड़ना ज्यादा तेज़ नहीं होगा? इससे उपरोक्त कोड को निष्पादित किया जाएगा।
धन्यवाद
मुझे नहीं लगता कि उसकी समस्या वह एहसास नहीं था कि कि 'and' शॉर्ट सर्किट, बल्कि यह है कि उसने सोचा कि' नक्शा है 'और 'यहां तक कि चलने से पहले पूरी सूची में जायेगा (जैसा कि उत्सुक भाषाओं में व्यवहार होगा) क्योंकि वह आलसी मूल्यांकन के बारे में नहीं समझता/जानता है। – sepp2k