Whence ,@ abbreviation for quasiquote-splicing?

Viewed 86

In Scheme, , is an abbreviation for quasiquote and ,@ is an abbreviation for quasiquote-splicing.

Where does the @ come from? Is it intended to be mnemonic for the operation, or consistent with @ in some other context, or something else or some combination?

1 Answers

Chapter 4 History in Quasiquotation in Lisp by Alan Bawden states that "Quasi-Quotation" comes from W.V. Quine's Mathemathical Logic (around 1940), but that does not contain an explicit marker for unquote. McCarthy developed Lisp around 1960, but also did not propose any form of S-expression quasiquotation. It was in the 1960-1970 that the AI community expended a lot of effort learning how to program with S-expression and list structure and symbols originated:

[N]othing from those years resembles today's Lisp quasiquotation as closely as the notation in McDermott and Sussman's Conniver language. In Conniver's notation 'X, ,X and @X where written !"X, @X and !@X respectively, but the idea was basically the same. (Conniver also had a ,X construct that could be seen as similar to @X, so it is possible that this is how the comma character eventually came to fill its current role.) (p. 6)

So in early Lisps the @ was used to indicate splicing. McDermott and Sussman's Conniver language started using ,, and that might be where the current use comes from.

First ,, was used to indicate splicing, because it was believed nested quasiquote splicing would not work. Bawden found out, to his surprise, that it was possible to get right. So that quasiquote-splicing and nested quasiquotation would not interfere, new symbols needed to be introduced to differentiate the two uses.

According to Bawden, it was not to confuse readers with new signs that quasiquote-splicing used the @ sign. It had already been in use so it made sense to do quasiquote-splicing with ,@X ("comma-atsign").

Why was there chosen for @ earlier I haven't found. Maybe it is because the @ symbol comes from the Latin word ad, meaning at, to or toward, and with ,@ you add ,s... But this is speculation.

The reason found in Bawden is that it is consistent with @ in some other (historic) context.

Related