我在几个地方见过这个:
data T = T a :-> b
Run Code Online (Sandbox Code Playgroud)
特别是在快速检查中我们有
data Fun a b = Fun (a :-> b, b) (a -> b)
Run Code Online (Sandbox Code Playgroud)
是什么:->,它是如何从不同->?
Owe*_*wen 12
以冒号开头的运算符是构造函数或类型名称.在这种情况下,它是特定于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)
Run Code Online (Sandbox Code Playgroud)