Kon*_*lph 72
: 是"prepend"运算符:
x : xs
Run Code Online (Sandbox Code Playgroud)
返回一个列表,其中包含x第一个元素,后跟所有元素xs.在其他函数式语言中,通常会调用cons它,因为它"cons"通过从空列表重复应用来递归地填充列表:
1 : 2 : 3 : 4 : []
Run Code Online (Sandbox Code Playgroud)
是清单[1, 2, 3, 4].
cod*_*iss 22
可以随时查看GHCi/HUGS中的类型,因为本教程的第一步鼓励您下载GHC/HUGS.
Prelude> :t (:)
(:) :: a -> [a] -> [a]
Prelude> :t (++)
(++) :: [a] -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
从各自的类型来看,很容易推断出它们的用法.
PS:http: //haskell.org/hoogle/太棒了.
Cia*_*ran 16
Haskell中的:运算符是列表的构造函数.它是'缺点'冒号之前的任何内容都在它之后指定的列表中.
例如,通过将每个数字"提供"到空列表上来形成整数列表,例如;
该列表[1,2,3,4]
可以构造如下:
4 : [] (将4列入清单)3 : [4] (将3列入包含4的清单)2 : [3,4] (将2列入包含3,4的列表中)1 : [2,3,4] (将1列入包含2,3,4的清单)给你;
[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
完全写完了;
1 : 2 : 3 : 4 : []
Run Code Online (Sandbox Code Playgroud)
jbe*_*man 11
它是列表的类型构造函数.它是从任何其他类型的构造一样,没有不同Just或Left,不同之处在于它是缀.有效类型构造函数可以是以大写字母开头的单词,也可以是以冒号开头的符号.
因此,您可以为自己的数据类型定义中缀构造函数.例如:
data MyList a = a :> MyList a
| Empty
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我们定义了一个MyList使用两个构造函数调用的类型:第一个是:>带有元素和另一个元素的奇怪构造函数MyList a; 第二个是空构造函数Empty,它等同[]于Haskell的本机列表.
以上相当于:
data MyList a = Cons a (MyList a)
| Empty
Run Code Online (Sandbox Code Playgroud)