2009-08-07 17 views
9

Chcę użyć klauzuli condp, ale nie wiem, jak złapać wszelkie niedopasowane klauzuli. Jak mogę to zrobić?Jak napisać: jeszcze w Condp w Clojure?

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

Odpowiedz

17

documentation for condp mówi:

Pojedyncza domyślne wyrażenie może obserwować klauzul, a jego wartość zostanie zwrócona, jeśli nie klauzula pasuje. Jeśli nie podano żadnego wyrażenia domyślnego i żadna klauzula nie zostanie dopasowana, zgłoszony zostanie wyjątek IllegalArgumentException.

Więc:

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