Estoy trabajando con clojure y aunque he incursionado con cefaleas antes, tengo problemas para encontrar una forma limpia de anotar sentencias de let en sentencias de cond. Por ejemplo, considere la siguiente función:let inside cond
(defn operate-on-list [xs]
(let [[unpack vector] (first xs)]
(cond
[(empty? xs) 'empty
unpack vector
:else (operate-on-list (rest xs))])))
Es una operación recursiva bastante estándar en una lista, pero hay que hacer un trabajo sobre el primer elemento en la lista antes de que funciona con el contenido. El problema, por supuesto, es que la lista puede estar vacía.
En este ejemplo, no sería difícil cambiar unpack
a ((first xs) 0)
y vector
a ((first xs) 1)
, pero esto rápidamente se pone fea, si aún queda trabajo por hacer en los primeros (xs).
¿Hay alguna forma de utilizar de manera efectiva una instrucción let en un estado intermedio?
Gracias.
-Nate
Hi - no está claro para mí lo que está tratando de lograr aquí. Puede encontrar este interesante http://www.assembla.com/spaces/clojure/tickets/200 y http://groups.google.com/group/clojure/browse_thread/thread/c1097ce07506fc39 Por favor, considere indicar cuál es la función que se supone hacer en su pregunta, y algunos ejemplos de entradas y salidas. La sintaxis no se ve como una declaración de cond válida ya que el cuerpo del cond se envuelve en un vector. –