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

时间:2011-08-18 08:33:51

标签: haskell

我在几个地方见过这个:

data T = T a :-> b

值得注意的是,我们有快速检查

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

:->是什么?与->有什么不同?

2 个答案:

答案 0 :(得分:12)

以冒号开头的运算符是构造函数或类型名称。在这种情况下,它是特定于quickcheck的数据类型的类型名称,但通常是符号: - >可以用于任何构造函数或类型名称(它不是正确语言的一部分)。

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)

答案 1 :(得分:5)

回答了我自己的问题:首先将其视为

data Edge = i :-> i

:->当然是构造函数。