
If you do this at all, reuse the regular quotes, don't invent yet another weird and wonderful lexical syntax. Haskell is already bad enough that way, with \ used for lambda and so on. @" would be okay I guess.
Why not just go the Python way and use """ ?
That is, three literal quotes at the beginning and end.
After all, Python has lifted quite a few things from Haskell. Time to return the favor. ;-)
I'm not fussy as to exactly what syntax is chosen, just that we get some kind of here-doc. I've been using C# quite a bit recently, so the @"..." syntax seems quite appealing. It's fairly lightweight, and @ doesn't have too many other uses in Haskell syntax, does it? (just the name@(a1:a2:_) usage springs to mind). Something else to consider: in C#, at least, the escaping rules change depending on which type of string literal you choose (single or multi-line). In multi-line (AKA verbatim) strings, escaping is switched off, so a single backslash, for example, will appear as such in the output. This obviously makes it easier to preserve a block of text verbatim if it contains backslashes and escape sequences. The exceptions are backslash-double-quote (\") and two double-quotes (""), which both result in one double-quote in the result. Alistair