Erlang オペレータと関数の壁
関数は fun my_module:my_fun/1 のような型で使えるが、オペレータはこれができない。
でも、Erlang ではシングルクウォートで囲めば任意の関数名(atom)を作れるので、次のように '+' とかいう関数を定義してみる。
すると、lists:foldl(fun ope:'+'/2, 0, lists:seq(1, 100)). みたいなことができるけど、嬉しいかなぁ?
-module(ope).
-export(['+'/2, '-'/2, '*'/2, '/'/2, test/0]).
'+'(A, B) ->
A + B.
'-'(A, B) ->
A - B.
'*'(A, B) ->
A * B.
'/'(A, B) ->
A / B.
test() ->
lists:foldl(fun ope:'+'/2, 0, lists:seq(1, 100)).
0 件のコメント:
コメントを投稿