Ich versuche, eine einfache Textverarbeitung in Haskell zu machen, und ich frage mich, was ist der beste Weg, dies in einer FP-Sprache zu tun? Ich schaute auf das Parsec-Modul, aber das scheint viel ausgeklügelter zu sein, als ich als neuen Haskeller suche. Was wäre der beste Weg, alle Interpunktionen aus einem Textkorpus zu entfernen? Meine naive Herangehensweise war, eine Funktion wie diese zu machen:
%Vor% Eine möglicherweise effizientere Methode (O (log n) statt O (n)) ist die Verwendung eines Set
(aus Data.Set ):
Sie müssen die Menge außerhalb der Funktion konstruieren, so dass sie nur einmal berechnet wird (indem sie über alle Aufrufe verteilt wird), da der Aufwand für das Erstellen der Menge viel größer ist als der einfache notElem
-Test, den andere haben vorgeschlagen.
Hinweis: Dies ist eine so kleine Situation, dass der zusätzliche Overhead von Set
die asymptotischen Vorteile der Menge gegenüber der Liste überwiegt. Wenn also nach absoluter Leistung gesucht wird, muss sein profiliert.
Sie können Ihre Zeichen in einem String gruppieren und notElem verwenden:
%Vor%oder in einem funktionelleren Stil:
%Vor%