2011-08-18 9 views
9

मैं कुछ स्थानों में इस देखा है में मतलब है:क्या करता है: -> एक haskell प्रकार विनिर्देश

data T = T a :-> b 
विशेष रूप से quickcheck में

हम

data Fun a b = Fun (a :-> b, b) (a -> b) 

:-> और कैसे करता है क्या है यह -> से भिन्न है?

+0

क्या आप अतिरिक्त को एवर के रूप में पोस्ट कर सकते हैं? अपने खुद के सवालों का जवाब देना बहुत मुश्किल है। – fuz

उत्तर

12

एक कोलन से शुरू होने वाले ऑपरेटर एक निर्माता या प्रकार का नाम है। इस मामले में यह त्वरित प्रकार के डेटा प्रकार के लिए एक प्रकार का नाम है, लेकिन आम तौर पर प्रतीक: -> किसी भी कन्स्ट्रक्टर या टाइप नाम के लिए इस्तेमाल किया जा सकता है जैसा कि आप पसंद करते हैं (यह उचित भाषा का हिस्सा नहीं है)।

The definition of :-> in quickcheck:

-- the type of possibly partial concrete functions 
data a :-> c where 
    Pair :: (a :-> (b :-> c)) -> ((a,b) :-> c) 
    (:+:) :: (a :-> c) -> (b :-> c) -> (Either a b :-> c) 
    Unit :: c -> (() :-> c) 
    Nil :: a :-> c 
    Table :: Eq a => [(a,c)] -> (a :-> c) 
    Map :: (a -> b) -> (b -> a) -> (b :-> c) -> (a :-> c) 
5

मेरे अपने प्रश्न का उत्तर दिया: पहला

data Edge = i :-> i 

:-> निर्माता निश्चित रूप से है के रूप में देखा।

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