リストライブラリ
このライブラリを使うにはソースコードに
include "List.mok";
と追加します。
基本的な関数
last
last : [α] -> α
リストの最後の要素を返します。
init
init : [α] -> [α]
最後の要素を除いたリストを返します。
リストの特別な畳み込み
any
any : (α -> Bool) -> [α] -> Bool
any p xs
でリストxs
の要素のいずれかが述語p
を満たすか調べます。
all
all : (α -> Bool) -> [α] -> Bool
all p xs
でリストxs
の要素のすべてが述語p
を満たすか調べます。
sum
sum : [Int] -> Int
整数のリストの総和を返します。
product
product : [Int] -> Int
整数のリストの総乗を返します。
maximum
maximum : [α] -> α
最大値を返します。
minimum
minimum : [α] -> α
最小値を返します。
リストの生成
replicate
replicate : Int -> α -> [α]
replicate n x
で長さn
ですべての要素がx
のリストを返します。
部分リスト
take
take : Int -> [α] -> [α]
take n xs
でリストxs
の先頭からn
番目までのリストを返します。
drop
drop : Int -> [α] -> [α]
drop n xs
でリストxs
の先頭からn
番目より後ろのリストを返します。
split_at
split_at : Int -> [α] -> ([α], [α])
split n xs
でリストxs
の戦闘からn
番目までのリストとそれより後ろのリストのペアを返します。
take_while
take_while : (α -> Bool) -> [α] -> [α]
take_while p xs
でリストxs
の先頭から述語p
を満たす範囲のリストを返します。
drop_while
drop_while : (α -> Bool) -> [α] -> [α]
drop_while p xs
でリストxs
の先頭から述語p
を満たす範囲を除いたリストを返します。
リストの検索
elem
elem : α -> [α] -> Bool
elem x xs
でx
がリストxs
に含まれるか調べます。
not_elem
not_elem : α -> [α] -> Bool
not_elem x xs
でx
がリストxs
に含まれないか調べます。
find
find : (α -> Bool) -> [α] -> Maybe<α>
find p xs
で述語p
を満たすリストxs
の最初の要素を返します。
filter
filter : (α -> Bool) -> [α] -> [α]
filter p xs
で述語p
を満たすリストxs
の要素をすべて返します。
partition
partition : (α -> Bool) -> [α] -> ([α], [α])
partition p xs
でリストxs
のうち述語p
を満たすものとそうでないもののペアを返します。
リストのzip関数とunzip関数
zip
zip : [α] -> [β] -> [(α, β)]
2つのリストを受け取り、ペアのリストを返します。
zip_with
zip_with : (α -> β -> γ) -> [α] -> [β] -> [γ]
一般化したzip関数
unzip
unzip : [(α, β)] -> ([α], [β])
ペアのリストを受け取り、リストのペアを返します。
リストの走査
iter
iter : (α -> ()) -> [α] -> ()
リストの各要素にアクションを適用します。
iteri
iteri : (Int -> α -> ()) -> [α] -> ()
インデックス付きのiter関数
mapi
mapi : (Int -> α -> β) -> [α] -> [β]
インデックス付きのmap関数
リストの整列
sort
sort : [α] -> [α]
リストをソートします。