2011-08-18 23 views
9

Bunu birkaç yerde görmüştüm:Ne yapar: -> haskell tipi belirtiminde ortalama

data T = T a :-> b 

Özellikle hızlı bir şekilde

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

var :-> nedir ve ->'den nasıl farklıdır?

+0

Lütfen ekleri bir aswer olarak gönderir misiniz? Kendi sorularınızı cevaplamak harika, zor. – fuz

cevap

12

Kolonla başlayan işleç, bir kurucu veya tür adıdır. Bu durumda, quickcheck'e özgü bir veri türü için bir tür adıdır, ancak genel olarak sembol: -> istediğiniz herhangi bir kurucu veya tip adı için kullanılabilir (bu, dilin uygun bir parçası değildir).

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

Kendi sorumu yanıtladı: İlk

data Edge = i :-> i 

:-> yapıcı tabii olduğu gibi bu gördük.