跳轉到內容

Haskell/實驗模組/速查表原型 1

來自 Wikibooks,開放世界中的開放書籍

速查表

[編輯 | 編輯原始碼]

該表使用模板構建,以減少繁瑣操作。函式名稱使用粗體字是一種簡單的方法,用於吸引新手關注基本函式(與高階函式形成對比)。要觸發粗體字,請將模板的“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]

描述

計算透過刪除引數的第一個元素獲得的列表。

其他說明

如果應用於空列表,則會觸發錯誤。計算結果[]如果列表只有一個元素。

華夏公益教科書