(Renuncia - Soy consciente de la importancia de SEQs en Clojure)common lisp cons crea una lista a partir de dos símbolos, clojure cons requiere un seq para contra?
En Common Lisp la función contras se puede utilizar para combinar dos símbolos en una lista:
(def s 'x)
(def l 'y)
(cons s l)
En clojure - se puede solo contras en una secuencia - los contras no se han extendido para trabajar con dos símbolos. Así que hay que escribir:
(def s 'x)
(def l 'y)
(cons s '(l))
¿Hay un patrón de nivel superior en Clojure que explica esta diferencia entre Common Lisp y Clojure?
¡He estado programando en Clojure un poco y ni siquiera estaba al tanto de esto! Si lo que usted afirma es correcto, esta es una buena pregunta :) –
Tenga en cuenta que normalmente es mejor usar 'conj' que' contra'. Para obtener más detalles, consulte mi respuesta a esta pregunta (y el comentario de cgrand): http://stackoverflow.com/questions/3008411/clojure-seq-cons-vs-list-conj (De hecho, esa respuesta también explica la función de 'contras 'en Clojure en contraste con los tradicionales' contras 'de Lisp hasta cierto punto.) –
Su primer ejemplo no es una lista, es un par. Un par (a. B) es diferente de una lista de dos elementos (ab), que resulta ser el par (a. (B. Nil)) – Zorf