2011-08-18 12 views

risposta

12

Gli operatori che iniziano con due punti è un nome costruttore o tipo. In questo caso si tratta di un nome di tipo per un tipo di dati specifico per quickcheck, ma in generale il simbolo: -> potrebbe essere utilizzato per qualsiasi costruttore o nome di tipo che desideri (non fa parte del linguaggio corretto).

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

risposto alla mia domanda: prima ha visto questo come

data Edge = i :-> i 

:-> è, naturalmente, il costruttore.