Как мне реализовать цикл foreach в clojure? - PullRequest
24 голосов
/ 13 марта 2011

Внедрение цикла for в clojure кажется простым, но как я могу реализовать оператор foreach, который читает каждый элемент списка (вектор) и что-то делает?

вот так ...

(foreach i list expression)

Заранее спасибо!

Ответы [ 2 ]

31 голосов
/ 13 марта 2011

Просто замените for на doseq и все готово.Не используйте map, который так же ленив, как и for.

0 голосов
/ 26 февраля 2014

map является функциональным эквивалентом foreach, тогда как doseq - для императивного программирования с побочными эффектами.

map занимаетфункция f и секвенируемая коллекция coll и возвращает лениво вычисленный результат применения f к каждому элементу в коллекции.

Пример:

(map inc [1 2 3 4])
=> (2 3 4 5)

(map (fn [x] (* x 2)) [1 2 3 4])
=> (2 4 6 8)

(map dec (take 5 (range)))
=> (-1 0 1 2 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...