在the code from Scrap Your Zippers中,以下行的含义是什么:
type Move a = Zipper a -> Maybe (Zipper a)
Type 是类型的同义词,并使用相同的数据构造函数,因此这没有意义。这是怎么用的?
答案 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。