-module(hhfuns).
-compile(export_all).
one() -> 1.
two() -> 2.
add(X,Y) -> X() + Y()
> hhfuns:add(fun hhfuns:one/0, fun hhfuns:two/0).
fun function_name/arity를 붙여줘야만 one,two가 atom으로 해석되지 않고, 함수를 넘겨준 것으로 이해된다.
다른 방법은 없을까? 즉, one(),two()가 함수였다는 것을 알 수 있는 방법이 있어야 한다.
* type system이 있었다면? compile type때 미리 오류를 알 수 있었을 것이다.
Erlang의 아쉬운 장면이다.
도움이 되셨다면, 광고 클릭을 ㅎㅎ ^^
add(X, Y) when is_function(X), is_function(Y) ->
답글삭제X() + Y();
add(X, Y) ->
error.
이러면 됩니당.
국현님, 그런데 그건, 역시 추가적인 코딩이 필요하네요~
답글삭제