Ich möchte eine Haskell-Funktion schreiben, deren Verhalten von einem Regex-Muster abhängt, das einem der Argumente entspricht. In einer Sprache wie C / Python / Perl würde ich definitiv nur ein großes if / else-Konstrukt verwenden, aber ich habe diese Option nicht wirklich. Was ist der idiomatische Haskell-Weg, damit umzugehen?
Ich habe Wächter erwogen, aber sie funktionieren nicht: No instance for (Data.String.IsString source0)
:
Der Mustervergleich, der in Fallkonstrukten verwendet wird, wäre perfekt, wenn er Regex behandelt.
%Vor%Ihr erstes Beispiel funktioniert für mich:
%Vor% Ich glaube, Ihr IsString
-Fehler ist auf die überladene Zeichenfolgenliterale-Erweiterung zurückzuführen. Versuchen Sie, dies zu deaktivieren, oder versuchen Sie stattdessen explizit String
strings zu verwenden:
Zu laut? Sie können die Gruft zu den letzten Zeilen schieben.
%Vor%Benötigen Sie eine Untergruppenübereinstimmung?
%Vor% Am function3 "patttern1"
, Variable x
wird an "tt"
gebunden. Bei function3 "xyz"
wird der Test fehlschlagen und der nächste Zweig wird ausprobiert.