Подтвердить что ты не робот

Как реализовать цикл foreach в clojure?

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

как это...

(foreach i list expression)

Спасибо заранее!

4b9b3361

Ответ 1

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

Ответ 2

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

map принимает функцию f и коллекцию seqable 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)