リストライブラリ

このライブラリを使うにはソースコードに

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 xsxがリストxsに含まれるか調べます。

not_elem

not_elem : α -> [α] -> Bool

not_elem x xsxがリスト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 : [α] -> [α]

リストをソートします。