2009-08-07 3 views
9

Voglio usare la clausola condp ma non so come catturare alcuna clausola non corrispondente. Come lo faccio?Come scrivere: altro in condp in Clojure?

(defn subst[id value W-lang] 
    (let [[type expr][(first W-lang)(rest W-lang)]] 
    (condp = type 
     'num (first expr) 
     'add expr  
     ***** expr))) 

risposta

17

Il documentation for condp dice:

una singola espressione di default può seguire le clausole, e il suo valore sarà restituita se nessuna clausola corrisponde. Se non viene fornita alcuna espressione predefinita e nessuna clausola corrisponde, viene generata un'eccezione IllegalArgumentException.

Quindi:

(condp = type 
    'num (first expr) 
    'add expr 
    expr)))