Am noch neu in Haskell, so entschuldigen abgrenzen, wenn es eine offensichtliche Antwort ist ...
Ich möchte eine Funktion machen, die bis spaltet die dh alle folgenden Listen von Strings [String]:Haskell: eine Zeichenfolge, die von ausgewählten Unterketten und Leerzeichen
["int x = 1", "y := x + 123"]
["int x= 1", "y:= x+123"]
["int x=1", "y:=x+123"]
Alle in die gleiche Reihe von Strings, dh [[Zeichenfolge]]:
[["int", "x", "=", "1"], ["y", ":=", "x", "+", "123"]]
Sie können map words.lines
für den ersten [String] verwenden.
Aber ich kenne keine wirklich nette Möglichkeiten, um auch die anderen zu berücksichtigen - wo Sie die verschiedenen Sub-Strings würde "="
, ":="
, "+"
usw. die Hauptsaite aufzubrechen.
Danke für die Zeit nehmen mich auf Haskell zu erleuchten :-)
Vielen Dank für Ihre Antwort. Ich hoffte jedoch auf einen einfachen Weg, um es "rein" zu machen, d. H. Ohne andere Bibliotheken. Oh, und am liebsten ohne Monaden (weil ich noch nicht ganz dazu gekommen bin, über sie zu lernen, lol). –
Yeah parsec ist nicht großartig, wenn Sie anfangen. Ich fand es ziemlich einfach, einen Parser zu bearbeiten, den jemand anders geschrieben hatte, aber das Schreiben meiner eigenen war für eine Weile über meine Fähigkeiten hinaus. Benötigt etwas Trost mit Monaden. – luqui
Fair genug. Es ist jedoch eine Überlegung wert, als eine Option. Wenn Sie etwas anderes möchten, das nicht monadisch ist, müssen Sie möglicherweise mit einer benutzerdefinierten Option gehen. –