Sto lavorando con clojure e mentre mi sono dilettato con le lisps in precedenza, ho problemi a trovare un modo pulito per annidare le istruzioni in dichiarazioni cond. Ad esempio, si consideri la seguente funzione: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))])))
E 'un'operazione ricorsiva abbastanza standard in un elenco, ma ha bisogno di fare un certo lavoro sul primo elemento della lista prima che funziona con i contenuti. Il problema, ovviamente, è che la lista potrebbe essere vuota.
In questo esempio, non sarebbe difficile cambiare unpack
-((first xs) 0)
e vector
-((first xs) 1)
, ma questo diventa rapidamente brutto se più lavoro deve essere fatto sui primi (xs).
Esiste un modo per utilizzare efficacemente un'istruzione Let in modo parziale attraverso un cond?
Grazie.
-Nate
Hi - non è chiaro per me quello che sta cercando di ottenere qui. Potresti trovare questo interessante http://www.assembla.com/spaces/clojure/tickets/200 e http://groups.google.com/group/clojure/browse_thread/thread/c1097ce07506fc39 Si prega di prendere in considerazione l'indicazione della funzione presunta da fare nella tua domanda, e alcuni esempi di input e output. La sintassi non assomiglia a una dichiarazione di cond valida in quanto il corpo del cond è racchiuso in un vettore. –