The pipe sign (
|) is sometimes used to enclose symbols. Is there more information about when one might want or need to do this? The only example I could come up with is the empty symbol (
'||) which as far as I can tell cannot be represented otherwise.
The pipe sign (
If you have spaces in the symbol's name then it can be more convenient to use
| than escaping them with
\. Ditto for other characters that would normally terminate the symbol (like parentheses or semicolons).
| is used to delimit symbols that could not otherwise be written in concrete syntax. (There are alternatives, in particular
\ escapes.) Every possible string has a corresponding symbol (given
\ can make it much easier to write some symbols in source code.
The parsing rules for symbols are very flexible: roughly, a delimited sequence of characters parses as a symbol unless it parses as something else. That makes it a little tricky to exhaustively list cases when escapes are needed. One particularly notable case is creating symbols that would otherwise parse as numbers, such as
|42| (recall that
'42 instead evaluates to the number
(and (symbol? '|42|) (number? '42))). Symbols containing whitespace, e.g.
|Height of Giraffe|, or punctuation, e.g.
|,|, can also be useful in some contexts, such as working with data or implementing domain-specific languages.
In Scribble programs I use
@|a|b instead of
@a b to avoid a space between a and b.
Also in scribble: one way to document a parameter named
@a is to use
|@a| (this happens frequently with gui-easy programs such as https://github.com/benknoble/frosthaven-manager/blob/e8df89f71deefa0a0d4918f18c53544670b35d43/scribblings/reference.scrbl#L629, https://github.com/benknoble/frosthaven-manager/blob/e8df89f71deefa0a0d4918f18c53544670b35d43/scribblings/reference.scrbl#L856).