(Avertissement - Je suis conscient de l'importance de SEQS dans Clojure)lisp commun contre crée une liste à partir de deux symboles, clojure contre nécessite un seq à contre?
Dans Common Lisp la fonction contre peut être utilisé pour combiner deux symboles dans une liste:
(def s 'x)
(def l 'y)
(cons s l)
Dans clojure - vous pouvez seulement contre sur une séquence - contre n'a pas été étendu pour travailler avec deux symboles. Donc, vous devez écrire:
(def s 'x)
(def l 'y)
(cons s '(l))
Y at-il un modèle de niveau supérieur dans Clojure qui explique cette différence entre Common Lisp et Clojure?
J'ai programmé Clojure un peu et je n'étais même pas au courant! Si ce que vous prétendez est correct, c'est une bonne question :) –
Notez qu'il est normalement préférable d'utiliser 'conj' que 'cons'. Pour plus de détails, voir ma réponse à cette question (et le commentaire de cgrand): http://stackoverflow.com/questions/3008411/clojure-seq-cons-vs-list-conj (En fait, cette réponse explique aussi la fonction de 'cons' dans Clojure par opposition au traditionnel Lisp' contre 'dans une certaine mesure.) –
Votre premier exemple n'est pas une liste, c'est une paire. Une paire (a.b) est différente d'une liste de deux éléments (ab), qui se trouve être la paire (a. (b.nil)) – Zorf