2016-09-06 4 views
7

शीर्षक यह सब कहता है। foldl1 और foldl' दोनों को Foldable पर सामान्यीकृत किया गया है, जबकि foldl1' नहीं है। क्या यह सिर्फ हाल ही में निरीक्षण है? या यह एक डिजाइन पसंद है?Foldl1 'Foldable के लिए सामान्यीकृत क्यों नहीं है?

foldl1' के प्रकार

foldl1' :: (a -> a -> a) -> [a] -> a 

मैं यह उम्मीद foldl1 के रूप में एक ही प्रकार है:

foldl1 :: Foldable t => (a -> a -> a) -> t a -> a 

मैं यह भी देखना है कि foldl1'Data.List नहीं लेकिन Data.Foldable से निर्यात किया जाता है। शायद यह संबंधित है?

+3

न तो 'foldl1' और न ही' foldl1'' 'Foldable' में है। वे 'Foldable1', nonempty foldable कंटेनर की कक्षा में हैं। किसी ने गलती की और 'Foldable' में 'foldl1' डाल दिया। मुझे नहीं लगता कि किसी को भी उस त्रुटि को जोड़ना दिल है। – dfeuer

+0

@ डीफ्यूअर: 'फोल्डबल' का परिचय था जो पहले और चर्चा और चुनाव की लंबी अवधि से पहले नहीं था? क्या यह अनदेखा था या यह कुछ समझौता है? – ljedrz

+0

@ljedrz मुझे लगता है कि आप 'Foldable' के मूल डिज़ाइन (यदि कोई हैं) के साथ प्रीलूड में 'Foldable' का उपयोग करने के बारे में चर्चा को मिश्रित कर रहे हैं। – Cactus

उत्तर

0

शायद सामान्यीकृत फॉर्म सिर्फ would have no good place to live है? इसके पीछे कुछ प्रदर्शन कारण भी हो सकते हैं, लेकिन मुझे इसके बारे में कोई जानकारी नहीं मिली।

+0

डेटा। सूची पहले से ही foldl1 और foldl 'के सामान्यीकृत रूप को निर्यात करती है, जिनमें से दोनों फोल्डबल इंस्टेंस का हिस्सा हैं। तो ऐसा लगता है कि एक सामान्यीकृत foldl1 'दोनों डेटा से सूचीबद्ध किया जाना चाहिए। सूची और डेटा। स्थिरता के लिए फोल्डबल। – Kevin

संबंधित मुद्दे