関数に関する処理を集めたユーティリティモジュール.
Copyright (c) 2013-2014 DWANGO Co., Ltd. All Rights Reserved.
computation() = fun(() -> computation_status()) | fun((InputValue::term()) -> computation_status())
合成関数を構成する関数一つ一つの定義.個々の関数はarityを0又は1とし,computation_status()を返すものとする.
computation_status() = {ok, Response::term()} | ok | {error, Reason::term()} | error
合成関数を構成する関数一つ一つの返り値の定義.
stack_item() = {Module::module(), Function::atom(), Arity::arity() | (Args::[term()]), Location::[{file, Filename::string()} | {line, Line::pos_integer()}]}
apply_on_exit/4 | Pidsで指定したプロセスのうちの一つでも死んだら指定の関数を実行する. |
apply_on_exit_impl/4 | |
apply_on_exit_receiver/4 | |
composite_apply/1 | 関数のリストを先頭から順に実行する.ただし,先頭の関数は引数をとらない. |
composite_apply/2 | 関数のリストを先頭から順に実行する.先頭の関数が引数をとる場合は, その引数を本関数の第二引数にリストで指定する. |
fold_range/4 | 関数に loop X in [From, To] と直前の結果を渡して最後の結果を返す. |
map_range/3 | 関数に loop X in [From, To] を渡して各々の結果をリストで返す. |
maybe_fold_range/4 | {error, Reason} を返した場合に途中で処理を中断し, 結果を返す fold_range/4 |
repeat/3 | 指定した回数だけ関数を実行する. |
try_apply/3 | 指定された関数を実行する. |
try_apply/4 | 指定された関数を実行する. |
try_call/1 | 引数の関数を実行する. |
try_call/2 | 引数の関数を実行する. |
apply_on_exit(Pids::[pid()], Module::module(), Function::atom(), Args::[term()]) -> Executor::pid()
Pidsで指定したプロセスのうちの一つでも死んだら指定の関数を実行する.
apply_on_exit_impl(Pids::[pid()], Module::module(), Function::atom(), Args::[term()]) -> Executor::pid()
apply_on_exit_receiver(RefList::[reference()], Module::module(), Function::atom(), Args::[term()]) -> Executor::pid()
composite_apply(FunctionList::[computation()]) -> computation_status()
関数のリストを先頭から順に実行する.ただし,先頭の関数は引数をとらない.
composite_apply(FunctionList::[computation()], Arg::term()) -> computation_status()
関数のリストを先頭から順に実行する.先頭の関数が引数をとる場合は, その引数を本関数の第二引数にリストで指定する. リスト中の各関数の返り値を,次に実行される関数の引数として渡して errorを吐くまで実行していく.
fold_range(Function, AccIn::term(), From::integer(), To::integer()) -> AccOut::term()
Function = fun((Index::integer(), AccIn::term()) -> AccOut::term())
関数に loop X in [From, To] と直前の結果を渡して最後の結果を返す.
map_range(Function, From::integer(), To::integer()) -> [AccOut::term()]
Function = fun((X::integer()) -> AccOut::term())
関数に loop X in [From, To] を渡して各々の結果をリストで返す.
maybe_fold_range(Fun, AccIn::term(), From::integer(), To::integer()) -> {ok, Result::term()} | {error, Reason}
Fun = fun((Index::integer(), AccIn::term()) -> {ok, AccOut::term()} | {error, Reason})
Reason = term()
{error, Reason}
を返した場合に途中で処理を中断し, 結果を返す fold_range/4
repeat(Function, InitState::term(), MaxIndex::non_neg_integer()) -> FinalState::term()
Function = fun((Index::non_neg_integer(), State::term()) -> NextState::term())
指定した回数だけ関数を実行する. 関数には loop index in [0, N) が渡される
try_apply(Module::module(), Function::atom(), Args::[term()]) -> FunctionResult | ErrorResult
FunctionResult = term()
ErrorResult = {error, {'EXIT', {throw | error | exit, Reason::term(), [stack_item()]}}}
指定された関数を実行する. 実行中に例外が発生した場合は{error, {
EXIT', {Class, Reason, Stacktrace}}}'を返す
try_apply(Module::module(), Function::atom(), Args::[term()], ErrorResult) -> FunctionResult | ErrorResult
FunctionResult = term()
ErrorResult = term()
指定された関数を実行する. 実行中に例外が発生した場合はErrorResult
を返す
try_call(Fun::function()) -> FunctionResult | ErrorResult
FunctionResult = term()
ErrorResult = {error, {'EXIT', {throw | error | exit, Reason::term(), [stack_item()]}}}
引数の関数を実行する. 実行中に例外が発生した場合は{error, {
EXIT', {Class, Reason, Stacktrace}}}'を返す
try_call(Fun::function(), ErrorResult) -> FunctionResult | ErrorResult
FunctionResult = term()
ErrorResult = term()
引数の関数を実行する. 実行中に例外が発生した場合はErrorResult
を返す