M.$1

static field

M.$n(1)のショートカットです。

M.$2

static field

M.$n(2)のショートカットです。

M.$3

static field

M.$n(3)のショートカットです。

M.$4

static field

M.$n(4)のショートカットです。

M.$n

static method

引数のプレースホルダです。
関数ラッパ(M.F)で使用します。

$F((x, y, z) => x + y + z)(M.$n(1), "6", M.$n(2))("7")("5");  // outputs "765"

M.Either.unit

static method

モナドのunit関数です。
このメソッドはM.Right(x)と等価です。

M.F

static method

カリー化および合成可能な関数ラッパを生成します。
最初の引数にはラップする関数、2番目の引数には引数の長さ(arity)を指定します。
2番目の引数が省略されたときは最初の引数の長さが指定されます。

M.F((x, y, z) => x + y + z)(7)(6)(5);  // outputs 18

M.F.argumentsLength

method

この関数ラッパの引数の長さを返します。

M.F.multiply

method

このメソッドは'pipe'と等価です。

M.F.pipe

method

関数を連結します。
引数で与えられる、連結される関数の引数の長さは1である必要があります。
連結された関数もカリー化出来ます。

M.F((x, y, z) => x + y + z).pipe(x => x + 2)(7)(6)(5);  // outputs 20

M.F.unit

static method

恒等関数(Iコンビネータ)です。
M.F.Iはこの関数のエイリアスです。

M.F.value

method

ラップされている関数を返します。

M.Identity

static method

与えられた引数に対する恒等モナドを生成します。

M.Identity.bind

method

モナドのbind関数です。
単純に保持している値を与えられた関数に適用します。

M.Identity(4).bind(x => M.Identity(x + 2));  // outputs M.Identity(6)

M.Identity.multiply

method

このメソッドは'bind'と等価です。

M.Identity.toString

method

保持している値の文字列表現を取得します。

M.Identity.unit

static method

モナドのunit関数です。
M.Identityと等価です。

M.Identity.value

method

保持している値を返します。

M.Just

static method

与えられた値を持つmaybe Justモナドを生成します。

M.Just.bind

method

モナドのbind関数です。
保持している値を与えられたa → M.Maybe aとなるような関数に適用した結果を返します。

M.Just(3).bind(x => M.Just(x * x));  // outputs M.Just(9)

M.Just.isNothing

method

常にfalseを返します。

M.Just.multiply

method

このメソッドは'bind'と等価です。

M.Just.or

method

このモナドを返します。

M.Just(3).or(M.Just(4));  // output M.Just(3)

M.Just.value

method

保持している値を返します。

M.Just(3).value();  // outputs 3

M.L

static method

引数で与えられた要素の有限のリストを生成します。

M.L(3, 4, 6).at(1);   // outputs 4

M.L.at

method

指定されたインデックスの要素を取得します。

M.L.N(1).at(10);  // outputs 10

M.L.bind

method

モナドのbind関数です。
引数はリストの各要素を受け取り、M.Lを返す関数です。

M.L(2, 7).bind(x => M.L(x + 2, x + 3));  // outputs M.L(4, 5, 9, 10)

M.L.combination

static method

最初の引数で与えられた配列から2番目の引数で与えられた数を取り出した組み合わせを生成します。

M.L.combination(["a", "b", "c"], 2);  // outputs M.L(M.T("a", "b"), M.T("a", "c"), ...)

M.L.concat

method

リストを連結します。

M.L(3, 4).concat(M.L(6));  // outputs M.L(3, 4, 6)

M.L.create

static method

最初の値が最初の引数で、その次の値がサンク(引数のない関数)で与えられるリストを生成します。

function succ(n) {
	return M.L.create(n, function() { return succ(n + 1); });
}
succ(1);  // outputs M.L(1, 2, 3, 4, 5, ...)

M.L.every

method

リストの要素に引数で与えられた関数がfalseとなるものがあるときfalseを返します。
注意: このメソッドは要素数が無限個のとき停止しない可能性があります。

M.L(3, 4, 6).every(x => x % 2 === 0);  // outputs false

M.L.filter

method

要素が引数で与えられた関数を通した時がtrueとなる要素のみを選択します。
このメソッドはリストの要素数が無限個でも使用できます。

M.L.N(1).filter(x => x % 2 === 0);  // outputs M.L(2, 4, 6, ...)

M.L.isNull

method

リストが空のときtrueを返します。

M.L.map

method

リストの各要素を引数の関数に作用させた結果のリストを取得します。
このメソッドはリストの要素数が無限個でも使用できます。

M.L.N(1).map(x => x * 2);  // outputs M.L(2, 4, 6, ...)

M.L.map

static method

2番目以降の引数で与えられた引数を最初の引数で与えられた関数に適用した結果のリストを返します。
このメソッドはリストが無限でも使用できます。

M.L.map((x, y, z) => x + y + z, M.L(1, 2, 3), M.L(3, 4, 5), M.L(6, 7));  // outputs M.L(10, 13)

M.L.multiply

method

このメソッドはbindと等価です。

M.L.N

static method

引数で始まる自然数を表す無限リストを生成します。

M.L.N(0);  // outputs M.L(0, 1, 2, ...)

M.L.permutation

static method

最初の引数で与えられた配列から2番目の引数で与えられた数を取り出した順列を生成します。
2番目の引数が省略されたときは配列すべての順列を生成します。

M.L.permutation(["a", "b", "c"], 2);  // outputs M.L(M.T("a", "b"), M.T("a", "c"), ...)

M.L.power

static method

最初の引数で与えられたリストを2番目の引数でべき乗したリストを生成します。

// outputs M.L(M.T("a", "a"), M.T("a", "b"), M.T("b", "a"), M.T("b", "b"))
M.L.power(M.L("a", "b"), 2);

M.L.product

static method

与えられた引数のデカルト積を返します。
引数には無限リストを渡すこともできます。

// outputs M.L(M.T(2, 3), M.T(4, 3), M.T(2, 6), M.T(6, 3), M.T(4, 6), M.T(6, 6))
M.L.product(M.L(2, 4, 6), M.L(3, 6));

M.L.range

static method

最初の引数で始まり、2番目の引数で終わる整数の有限リストを生成します。
引数自身を含みます。

M.L.rest

method

最初の要素を除いたリストを取得します。

M.L(3, 4, 6).rest();  // outputs M.L(4, 6)

M.L.some

method

リストの要素に引数で与えられた関数がtrueとなるものがあるときtrueを返します。
注意: このメソッドは要素数が無限個のとき停止しない可能性があります。

M.L(3, 4, 6).some(x => x % 2 === 0);  // outputs true

M.L.take

method

引数で与えられだけの数の要素を配列で取得します。
引数が省略された時はすべての要素を取得します。
注意:引数が省略され、リストの要素が無限個あるとき、このメソッドは停止しない可能性があります。

M.L.N(2).take(5));  // outputs [2, 3, 4, 5, 6]

M.L.unit

static method

モナドのunit(return)関数です。
引数で与えられた要素のみを持つリストを生成します。

M.L.unit(9);  // outputs M.L(9)

M.L.value

method

最初の要素を取得します。

M.L(3, 4, 6).value();  // outputs 3

M.L.Z

static field

整数を表す無限リストです。

M.L.zip

static method

引数で与えられたリストをタプルにまとめたリストを生成します。

M.L.zip(M.L(1, 2, 3), M.L(3, 4, 5), M.L(6, 7));  // outputs M.L(M.T(1, 3, 6), M.T(2, 4, 7))

M.Left.bind

method

モナドのbind関数です。
このモナド自身を返します。

M.Left(3).bind(x => M.Right(x * x));  // outputs M.Left(3)

M.Left.either

method

保持している値を最初の関数に適用します。

M.Left(3).either(x => x + 2, x => x * 2);  // outputs 5

M.Left.multiply

method

このメソッドは'bind'と等価です。

M.Left.or

method

最初の引数で与えられたモナドを返します。

M.Left(3).or(M.Right(2));  // outputs M.Right(3)

M.Maybe.unit

static method

モナドのunit関数です。
このメソッドはM.Just(x)と等価です。

M.Nil

static field

空のリストです。

M.Nothing

static field

Nothingモナドです。

M.Nothing.bind

method

モナドのbind関数です。
このモナドを返します。

M.Nothing.bind(x => M.Just(x * x));  // outputs M.Nothing

M.Nothing.isNothing

method

常にtrueを返します。

M.Nothing.multiply

method

このメソッドは'bind'と等価です。

M.Nothing.or

method

与えられた引数を返します。

M.Nothing.or(M.Just(4));  // outputs M.Just(4)

M.Nothing.value

method

常にエラーをスローします。

M.Right

static method

EitherモナドのRightモナドです。

M.Right.bind

method

モナドのbind関数です。
保持している値を与えられたa → M.Either aとなるような関数に適用した結果を返します。

M.Right(3).bind(x => M.Right(x * x));  // outputs M.Right(9)

M.Right.either

method

保持している値を2番目の関数に適用します。

M.Right(3).either(x => x + 2, x => x * 2);  // outputs 6

M.Right.multiply

method

このメソッドは'bind'と等価です。

M.Right.or

method

このモナドを返します。

M.Right(3).or(M.Left(2));  // outputs M.Right(3)

M.State

static method

状態モナドを生成します。

M.State.bind

method

モナドのbind関数です。

M.State.evalState

method

このモナドを実行した結果の値を返します。

M.State.execState

method

このモナドを実行した結果の状態を返します。

M.State.getState

static field

状態を値にコピーする状態モナドです。

M.State.modify

static method

状態を与えられた関数に適用した結果に置き換える状態モナドを生成します。

M.State.multiply

method

このメソッドは'bind'と等価です。

M.State.putState

static method

状態を与えられた値に置き換える状態モナドを生成します。

M.State.runState

method

このモナドを実行した結果の値と状態のタプルを返します。

M.State.unit

static method

モナドのunit関数です。
このメソッドは与えられた値を持つ状態モナドを生成します。

M.StateT

static method

状態モナド変換子を生成します。
このメソッドは2つのカリー化された引数を持ちます。
最初の引数は任意のモナドmのコンストラクタで、2番目の引数はa → m (v, s)となるような関数です。

M.StateT.bind

method

モナドのbind関数です。

M.StateT.getState

field

状態を値にコピーする状態モナド変換子です。

M.StateT.lift

method

与えられたモナドを状態モナド変換子に持ち上げます。

M.StateT.modify

method

状態を与えられた関数に適用した結果に置き換える状態モナド変換子を生成します。

M.StateT.multiply

method

このメソッドは'bind'と等価です。

M.StateT.putState

method

状態を与えられた値に置き換える状態モナド変換子を生成します。

M.StateT.runStateT

method

このモナドを実行した結果の値と状態のタプルを返します。

M.StateT.unit

method

モナドのunit関数です。
このメソッドは与えられた値を持つ状態モナド変換子を生成します。

M.T

static method

引数で与えられたタプルを生成します。

M.T(1, 2, 3);  // outputs a tuple (1, 2, 3)

M.T.isTuple

static method

オブジェクトがタプルであるか判定します。

M.T.toArray

method

タプルを配列に変換します。

M.T(1, 2, 3).toArray()  // outputs [1, 2, 3]

M.tu

static field

do記法です。

M.tu($L(1, 2),
	x => $L(x * 2, x * 3),
	x => $L(x + 2, x + 3),
	x => $L(x * 2)).take();  // outputs [8, 10, 10, 12, 12, 14, 16, 18]