什么: - >表示haskell类型规范

jwo*_*ard 10 haskell

我在几个地方见过这个:

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)


jwo*_*ard 5

回答了我自己的问题:首先看到这个问题

data Edge = i :-> i
Run Code Online (Sandbox Code Playgroud)

:-> 当然是构造函数.