2017-06-28 9 views
5

मैं गुमनाम समारोह निम्नलिखित है:हास्केल इंटीजर अक्षर को विभिन्न प्रकारों में कैसे परिवर्तित करता है?

*Exercises> g (Sum 56) 
Sum {getSum = 55} 
*Exercises> g 56 
Sum {getSum = 55} 

दूसरे उदाहरण, कैसे संकलक Sum 56 करने के लिए 56 परिवर्तित करता है:

*Exercises> g = \(Sum n) -> Sum (n - 1) 

मुझे यह पसंद का उपयोग करें?

प्रस्ताव में, मैंने देखा कि SumNum का एक उदाहरण है, लेकिन यह रूपांतरण के बारे में स्पष्ट नहीं है।

उत्तर

8

जब हास्केल 56 जैसे पूर्णांक अक्षर को देखता है, तो यह इसे fromInteger 56 के रूप में व्याख्या करता है। fromInteger का प्रकार Num a => Integer -> a है, इसलिए इस कोड का प्रकार Num a => a है। (किसी भी प्रकार की, यहाँ a कहा जाता है, जो Num वर्ग के एक सदस्य है।)

इसका मतलब यह है जब आप एक संदर्भ में, जहां Num के एक सदस्य की उम्मीद है (आपके मामले में Sum) में इसका इस्तेमाल करते हैं, यह "सेट हो जाएगा कि "a से Sum, और का संस्करण Integer -> Sum टाइप करें। इस प्रकार fromInteger 56 :: Sum

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