Haskell - Müssen literale Backslashes immer in einem String maskiert werden?

8

Um in Haskell die literale Zeichenfolge "\" darzustellen, würde man normalerweise schreiben:

%Vor%

Gibt es jedoch eine Möglichkeit, die Zeichenfolge zu umgehen, sodass ein einzelner Backslash selbst geschrieben werden kann, ohne dass eine Escapezeichenfolge erforderlich ist? Zum Beispiel kann ich genau das in C # tun, indem ich @ an die Zeichenkette anwende:

%Vor%

Hat Haskell ein Äquivalent?

    
Justin Ethier 25.09.2010, 02:50
quelle

3 Antworten

5

Nein, siehe Abschnitt 2.6 der Haskell Lexical Structure .

Haskell hat keine rohen Saiten, Heredocs oder Tripel Saiten. Es tut uns leid. Die einzige Faszination, die Sie bekommen, ist diese:

%Vor%

Der Leerraum zwischen Zeilenenden und -beginnenden Schrägstrichen wird ignoriert. Dies ist beispielsweise dann nützlich, wenn Sie Inline-HTML ausgeben möchten, das in der Haskell-Quelle korrekt eingerückt ist, aber in der Ausgabe nicht zu stark eingerückt ist. (Nicht dass ich befürworte, auf diese Weise komplizierte HTML-Ausgaben zu machen.)

    
Nathan Shively-Sanders 25.09.2010, 03:02
quelle
2

Es gibt eine schöne Bibliothek (raw-strings-qq ) , die Sie QuasiQouter

gibt %Vor%     
spinus 17.02.2017 01:11
quelle
1

Dank des QuasiQuoting-Mechanismus ist es möglich, Standard-Haskell zu verwenden:

Ссылка

So, kein \\ Problem mehr. Das einzige Problem ist, dass Sie jetzt vorsichtig sein müssen, wenn Sie die Quasiquoting-Sequenz beenden, und dass Sie möglicherweise entkommen müssen. Im Zusammenhang mit regulären Ausdrücken habe ich es selbst unter Verwendung von \ u7c] oder ähnlichem verlassen, ich erinnere mich nicht genau. Also habe ich den Unicode- oder ASCII-Code für das Pipe-Zeichen verwendet. Aber diese |] Sequenz kommt nicht oft vor.

Und wenn Sie daran interessiert sind, reguläre Ausdrücke einzugeben, bin ich ein großer Fan der Rex-Bibliothek:

Ссылка

Das verwendet nicht nur Quasiquoting für einen schönen Regex-Eintrag (keine doppelten Backslashes), es verwendet auch Perl-ähnliche reguläre Ausdrücke und nicht die standardmäßigen regulären POSIX-Ausdrücke und erlaubt Ihnen sogar, reguläre Ausdrücke als Muster zu verwenden, die Ihren Methodenparametern entsprechen. Das ist Genie.

    
Emmanuel Touzery 16.04.2013 06:42
quelle

Tags und Links