2007/06/18

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 件のコメント: