Czy mogę stworzyć własnych strażników w Erlang?
Przyszedłem do tego kodu w sieci:
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.
Jest to wymarzony Guard I, który sprawdza, czy dane wejściowe są ciągami - jak to możliwe, że nie wolno mi ich używać w erlang, dlaczego tak jest? A czy jest jakaś praca?
Chciałbym móc pisać takie rzeczy jak:
Fun(Str) when is_string(Str) -> Str;
Fun(Int) when is_integer(Int) -> io:format("~w", [Int]).
lub nawet lepiej używać go w wiadomościach.