2009-08-07 5 views
9

Ich möchte die condp-Klausel verwenden, aber ich weiß nicht, wie man eine nicht übereinstimmende Klausel fängt. Wie mache ich das?Wie schreibe ich: else 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))) 

Antwort

17

Die documentation for condp sagt:

Ein einzelner Standardausdruck die Klauseln folgen kann, und sein Wert wird zurückgegeben, wenn keine Klausel übereinstimmt. Wenn kein Standardausdruck angegeben wird und keine Klausel übereinstimmt, wird eine IllegalArgumentException ausgelöst.

So:

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