#clojure #functional-programming
#clojure #функциональное программирование
Вопрос:
Я пытаюсь получить список для вычисления значения true / false по определенному числу. Когда я определяю функцию, clojure определяет ее нормально. Но он не делает то, что я хочу сделать. Просто изучаю clojure… так что я пока не очень разбираюсь в синтаксисе … извиняюсь, если это вопрос новичка.
В идеале он должен принимать список типа (список 9 0 3) и оценивать его как (список true false true)
(defn myfunc [lst](map (> x 1) lst))
Комментарии:
1. «Но он не делает то, что я хочу сделать» — не самое подходящее описание ошибки. Пожалуйста, убедитесь, что в дальнейших вопросах также указано сообщение об ошибке или о том, что результат не соответствует вашим ожиданиям.
Ответ №1:
Вот правильный синтаксис:
(defn greater-than-one?
[x]
(< 1 x))
а затем используйте его:
(mapv greater-than-one? (list 9 0 3)) => [true false true]
В вашем исходном формате вы также могли бы решить его следующим образом:
(defn myfunc [lst]
(map #(> % 1) lst))
и используйте его:
(myfunc (list 9 0 3)) => (true false true)
Вы можете найти этот проект шаблона полезным для начала работы. Пожалуйста, не забудьте также просмотреть список документации.
Комментарии:
1. Круто! Спасибо! Также: как бы вы возводили список в степень?
2. @bl4ckh4t (map #(Math / exp %) coll)
3. Итак, скажем, я хотел, чтобы процедура принимала список (l) и целое число (n) и возвращала последовательность l в степень n, я мог бы сделать (defn myfunc [x n] (map #(Math / exp % n) x)) ?? Но подача этого x = (список ‘a ‘b) и n = 2 возвращает ##NaN ##NaN