Haskell/实验模块/速查表原型 1
外观
该表使用模板构建,以减少繁琐操作。函数名称使用粗体字是一种简单的方法,用于吸引新手关注基本函数(与高级函数形成对比)。要触发粗体字,请将模板的“key”参数设置为非空值。
将最后一列命名为“计算结果”非常巧妙,因为这样条目可以非常简短。虽然不总是有效,但我喜欢它。 -- apfeλmus 2010年5月15日 (UTC) 19:15
我们可以从Prelude 文档中获取分类等信息。
名称 | 类型签名 | 计算结果 | 示例 |
---|---|---|---|
基本函数 - 基础 | |||
head |
:: [a] -> a |
列表的第一个元素。 | head [1,2,3] = 1
|
tail |
:: [a] -> [a] |
第一个元素之后的所有元素。 | tail [1,2,3] = [2,3]
|
last |
:: [a] -> a |
最后一个元素。 | last [1,2,3] = 3
|
init |
:: [a] -> [a] |
最后一个元素之前的全部元素。 | init [1,2,3] = [1,2]
|
null |
:: [a] -> Bool |
列表是否为空。 | null ['a','x'] = False null [] = True
|
length |
:: [a] -> Int |
元素数量。 | length [True,False] = 2
|
(!!) |
:: [a] -> Int -> a |
给定位置的元素,从 0 开始 | [4,5,6] !! 1 = 5.
|
reverse |
:: [a] -> [a] |
反序排列的元素。 | reverse [1,2,3] = [3,2,1]
|
map |
:: (a -> b) -> [a] -> [b] |
将函数应用于每个元素。 | map f [1,2,3] = [f 1, f 2, f 3]
|
filter |
:: (a -> Bool) -> [a] -> [a] |
仅返回满足谓词的元素。 | filter odd [1..7] = [1,3,5,7]
|
(++) |
:: [a] -> [a] -> [a] |
追加两个列表。 | [1,2] ++ [3,4] = [1,2,3,4]
|
[] |
:: [a] |
空列表。 | []
|
(:) |
:: a -> [a] -> [a] |
前置一个元素。 | [1,2,3] = 1:(2:(3:[]))
|
折叠和扫描 - 高级 | |||
foldl |
:: (a -> b -> a) -> a -> [b] -> a |
从左到右折叠 |
|
foldl1 |
:: (a -> a -> a) -> [a] -> a |
从左到右折叠,使用第一个元素初始化 |
|
scanl |
:: (a -> b -> a) -> a -> [b] -> [a] |
部分从左到右折叠的列表 |
|
scanl1 |
:: (a -> a -> a) -> [a] -> [a] |
部分从左到右折叠的列表,使用第一个元素初始化 |
|
foldr |
:: (a -> b -> b) -> b -> [a] -> b |
从右到左折叠 |
|
foldr1 |
:: (a -> a -> a) -> [a] -> a |
从右到左折叠,使用第一个元素初始化 |
|
scanr |
:: (a -> b -> b) -> b -> [a] -> [b] |
部分从右到左折叠的列表 |
|
scanr1 |
:: (a -> a -> a) -> [a] -> [a] |
部分从右到左折叠的列表,使用第一个元素初始化 |
|
这里我们可以对这些函数进行一些一般的讨论。但是,在我看来,一般性评论更适合放在实际的“构建词汇表”模块中,而速查表页面则作为单独的附录,链接到书籍的主体部分。
更详细的说明。表中的自动生成的超链接指向此处的三级标题。
我不知道在注释部分重复表格中的信息是否是一个好主意。如果我们选择这样做,也可以使用模板来帮助格式化。
类型签名
[a] -> a
描述
计算给定列表的第一个元素。
其他说明
如果应用于空列表,则会触发错误。
类型签名
[a] -> [a]
描述
计算通过删除参数的第一个元素获得的列表。
其他说明
如果应用于空列表,则会触发错误。计算结果[]如果列表只有一个元素。