2017-09-19 2 views
4

Dans le schéma, , est l'abréviation de quasiquote et ,@ est l'abréviation de quasiquote-splicing.D'où, @ abréviation pour l'épissage des quasiquotes?

D'où vient le @? Est-il destiné à être mnémonique pour l'opération, ou compatible avec @ dans un autre contexte, ou quelque chose d'autre ou une combinaison?

Répondre

6

Chapitre 4 L'historique dans Quasiquotation in Lisp by Alan Bawden indique que "Quasi-Quotation" provient de W.V. La Logique mathématique de Quine (vers 1940), mais qui ne contient pas de marqueur explicite pour unquote. McCarthy a développé Lisp autour de 1960, mais n'a également proposé aucune forme de quasi-expression de S-expression. Il était dans le 1960-1970 que la communauté AI a consacré beaucoup d'efforts à apprendre à programmer avec S-expression et de la structure de la liste et les symboles origine:

[N] ien de ces années ressemble Lisp aujourd'hui quasiquotation aussi près comme la notation dans McDermott et Sussman's Conniver. Dans la notation de Conniver 'X, ,X et @X où écrit !"X, @X et [email protected] respectivement, mais l'idée était fondamentalement la même. (Conniver a également eu une ,X construction qui pourrait être considéré comme similaire à @X, il est donc possible que ce soit la façon dont le caractère virgule finalement venu remplir son rôle actuel.) (P. 6)

Donc au début Lisps le @ a été utilisé pour indiquer l'épissage. Le langage Connerm de McDermott et Sussman a commencé à utiliser ,, et c'est peut-être là l'origine de l'utilisation actuelle.

La première ,, a été utilisée pour indiquer l'épissage, car on pensait que l'épissage quasiquote ne fonctionnerait pas. Bawden découvrit, à sa grande surprise, qu'il était possible de faire les choses correctement. Pour que quasiquote-splicing et la quasiquotation imbriquée n'interfèrent pas, de nouveaux symboles ont dû être introduits pour différencier les deux utilisations. Selon Bawden, ce n'était pas pour confondre les lecteurs avec de nouveaux signes que quasiquote-splicing a utilisé le signe @. Il avait déjà été utilisé donc il était logique de faire quasiquote-splicing avec ,@X ("comma-atsign").

Pourquoi a-t-il été choisi pour @ plus tôt, je n'ai pas trouvé. Peut-être parce que le symbole @ vient du mot latin ad, signifiant at, to ou to, et avec ,@ vous ajoutez , s ... Mais c'est une spéculation.

La raison trouvée dans Bawden est qu'elle est cohérente avec @ dans un autre contexte (historique).

+0

Conner doit être une langue précédente de Scheme. Pour le contexte, Sussman est l'un des créateurs de Scheme (r). – Sylwester