リストライブラリ
このライブラリを使うにはソースコードに
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 : [α] -> [α]
リストをソートします。