Skip to content

Latest commit

 

History

History
211 lines (121 loc) · 8.19 KB

moyo_fun.md

File metadata and controls

211 lines (121 loc) · 8.19 KB

Module moyo_fun

関数に関する処理を集めたユーティリティモジュール.

Copyright (c) 2013-2014 DWANGO Co., Ltd. All Rights Reserved.

Data Types


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()}]}

Function Index

apply_on_exit/4Pidsで指定したプロセスのうちの一つでも死んだら指定の関数を実行する.
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引数の関数を実行する.

Function Details

apply_on_exit/4


apply_on_exit(Pids::[pid()], Module::module(), Function::atom(), Args::[term()]) -> Executor::pid()

Pidsで指定したプロセスのうちの一つでも死んだら指定の関数を実行する.

apply_on_exit_impl/4


apply_on_exit_impl(Pids::[pid()], Module::module(), Function::atom(), Args::[term()]) -> Executor::pid()

apply_on_exit_receiver/4


apply_on_exit_receiver(RefList::[reference()], Module::module(), Function::atom(), Args::[term()]) -> Executor::pid()

composite_apply/1


composite_apply(FunctionList::[computation()]) -> computation_status()

関数のリストを先頭から順に実行する.ただし,先頭の関数は引数をとらない.

composite_apply/2


composite_apply(FunctionList::[computation()], Arg::term()) -> computation_status()

関数のリストを先頭から順に実行する.先頭の関数が引数をとる場合は, その引数を本関数の第二引数にリストで指定する. リスト中の各関数の返り値を,次に実行される関数の引数として渡して errorを吐くまで実行していく.

fold_range/4


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/3


map_range(Function, From::integer(), To::integer()) -> [AccOut::term()]
  • Function = fun((X::integer()) -> AccOut::term())

関数に loop X in [From, To] を渡して各々の結果をリストで返す.

maybe_fold_range/4


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/3


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/3


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/4


try_apply(Module::module(), Function::atom(), Args::[term()], ErrorResult) -> FunctionResult | ErrorResult
  • FunctionResult = term()
  • ErrorResult = term()

指定された関数を実行する. 実行中に例外が発生した場合はErrorResultを返す

try_call/1


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/2


try_call(Fun::function(), ErrorResult) -> FunctionResult | ErrorResult
  • FunctionResult = term()
  • ErrorResult = term()

引数の関数を実行する. 実行中に例外が発生した場合はErrorResultを返す