Haskell类型关键字与签名一起使用

时间:2015-01-08 19:28:08

标签: haskell types signature ghci

the code from Scrap Your Zippers中,以下行的含义是什么:

type Move a = Zipper a -> Maybe (Zipper a)

Type 是类型的同义词,并使用相同的数据构造函数,因此这没有意义。这是怎么用的?

1 个答案:

答案 0 :(得分:2)

正如你所说,

type允许我们制作同义词。这意味着我们可以制作长而复杂类型的缩短版本。以下是String基类型的定义。是的,这就是它的定义:

type String = [Char]

这允许我们在编写类型时使类型更具可读性;每个人都更喜欢看String[Char]

您还可以使用data关键字中的类型参数。以下是一些示例:

type Predicate t = t -> Bool
type Transform t = t -> t
type RightFoldSignature a b = (a -> b -> b) -> b -> [a] -> b
type TwoTuple a b = (a,b)
type ThreeTuple a b c = (a,b,c)

......等等。所以,你所拥有的声明并没有特别奇怪 - 作者正在制作一个类型的同义词,使事情更容易编写和更清晰阅读,大概是用于作者想要的函数类型创造。

了解一下Haskell对此own little section的了解,可以找到不同声明的列表here和一篇文章here