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]
描述
計算透過刪除引數的第一個元素獲得的列表。
其他說明
如果應用於空列表,則會觸發錯誤。計算結果[]如果列表只有一個元素。