Использование фильтра в функции clojure - PullRequest
0 голосов
/ 19 сентября 2018

Почему

(filter even? (range 10))

дает (0 2 4 6 8)

, но

((fn [x] filter even? x)
          (range 10))

дает

(0 1 2 3 4 5 6 7 8 9)

?

1 Ответ

0 голосов
/ 19 сентября 2018

В вашей анонимной функции есть проблема - давайте напишем ее более читабельно:

((fn [x]
   (do filter
       even?
       x))
 (range 10))

Теперь я думаю, что очевидно, почему она возвращает всю последовательность диапазонов: значение (range 10)привязан к аргументу x и возвращается как результат вашей функции.

Правильная версия будет:

((fn [x] (filter even? x))
 (range 10))
;; => (0 2 4 6 8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...