Kann ich in Erlang meine eigenen Wachen bauen?

Ich bin auf diesen Code im Web gestoßen:

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.

Es ist die Wache, von der ich immer geträumt habe, indem es prüft, ob es sich bei einer Eingabe um eine Zeichenfolge handelt. Ich darf sie jedoch nicht in Erlang verwenden. Warum ist das so? Und gibt es eine Abhilfe?

Ich möchte in der Lage sein, Dinge zu schreiben wie:

Fun(Str) when is_string(Str) -> Str;
Fun(Int) when is_integer(Int) -> io:format("~w", [Int]).

oder noch besser für Nachrichten verwenden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage