widziałem to w kilku miejscach:Co robi: -> oznacza w specyfikacji typu Haskell
data T = T a :-> b
Zwłaszcza w QuickCheck mamy
data Fun a b = Fun (a :-> b, b) (a -> b)
Czym jest i jak działa :->
różni się od ->
?
widziałem to w kilku miejscach:Co robi: -> oznacza w specyfikacji typu Haskell
data T = T a :-> b
Zwłaszcza w QuickCheck mamy
data Fun a b = Fun (a :-> b, b) (a -> b)
Czym jest i jak działa :->
różni się od ->
?
Operatory rozpoczynające się dwukropkiem to nazwa konstruktora lub typu. W tym przypadku jest to nazwa typu dla typu danych specyficznego dla quickcheck, ale ogólnie symbol: -> może być użyty dla dowolnego konstruktora lub nazwy typu, jak chcesz (nie jest częścią właściwego języka).
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)
odpowiedział na moje własne pytanie: pierwszy raz zobaczyłem to jako
data Edge = i :-> i
:->
jest oczywiście konstruktor.
Czy możesz dodać wiadomość jako dodatek? Wspaniale jest odpowiadać na własne pytania, trudne. – fuz