The Hugs 98 User's Guide
Prev | Chapter 7. Hugs-specific language extensions | Next

# 7.3. Here documents

These expressions (named after similar things in Unix shells) are another way of writing string literals, often useful for large strings. Everything from ```` to `''` (including newlines and backslashes, but not `$` characters) is treated as literal text, and layout is ignored. The exception is the `$` character, so that you can embed the value of the variable `var` in the string by writing `$(``var``)`. To get a literal `$` character, write `$$` — single `$` characters are not allowed.

When the `+H` option is given, the following

    letter name = ``Dear $(name),
    Here are some characters: \ ' ` ".
    To learn more, send $$10 to the address below.''

is equivalent the Haskell 98 declaration

    letter name = "Dear " ++ quote name ++ ",\n\
                  \Here are some characters: \\ ' ` \".\n\
                  \To learn more, send $10 to the address below."

The function

    class Quote where
        quote :: a -> String

(basically no change for `String` and `Char`, and `show` for everything else) comes from the `Hugs.Quote` module, which also defines several common instances, and should be imported if you use the `$(``var``)` form. (This module also requires the `-98` option.)

Prev | Home | Next
Restricted type synonyms | Up | Hugs debugging primitives