Могу ли я сделать свою собственную гвардию в Эрланге?
Я наткнулся на этот код в Интернете:
is_char(Ch) ->
if Ch < 0 -> false;
Ch > 255 -> false;
true -> true
end.
is_string(Str) ->
case is_list(Str) of
false -> false;
true -> lists:all(is_char, Str)
end.
Это сторож, о котором я всегда мечтал, в том, что он проверяет, является ли ввод строкой - как же мне не разрешено использовать его в erlang, почему это так? И есть ли обход?
Я хотел бы иметь возможность писать такие вещи, как:
Fun(Str) when is_string(Str) -> Str;
Fun(Int) when is_integer(Int) -> io:format("~w", [Int]).
или даже лучше использовать его в сообщениях.