Я немного новичок в clojure, и я не уверен, как использовать предикаты. Например, как создать функцию, которая возвращает элементы в списке, который удовлетворяет предикату.Как использовать предикаты в clojure?
>(filter-in number? '(a 2 (1 3) b 7))
(2 7)
>filter in symbol? '(a (b c) 17 foo))
(a foo)
Я попытался это, но он не работает:
(defn filter-in [pred lst]
(fn [x]
(if (empty? lst)
()
(if (pred (first lst))
(cons (first lst) (filter-in pred (rest lst)))
(filter-in pred (rest lst))))))
Спасибо заранее.
Вы имели в виду '(номер фильтра? '(A 2 (1 3) b 7))'? –
Нет, имя функции является фильтром. –
@ChrisPhillips - ваш второй пример использования, в котором отсутствует открытый палец и '-' от имени функции? – noisesmith