Скорее всего, вас поражает лень map
. (map
создает ленивую последовательность, которая реализуется только тогда, когда некоторый код на самом деле использует его элементы. И даже тогда реализация происходит по частям, так что вам нужно пройти всю последовательность, чтобы убедиться, что все это реализовано.) Попробуйте обернуть map
выражение в dorun
:
(dorun (map println foundApps))
Кроме того, поскольку вы делаете это только для побочных эффектов, может быть, лучше использовать doseq
вместо:
(doseq [fa foundApps]
(println fa))
Обратите внимание, что (map println foundApps)
должен прекрасно работать в REPL; Я предполагаю, что вы извлекли это откуда-то в вашем коде, где это не принудительно. Нет такой разницы с doseq
, который является строгим (то есть, не ленивым) и будет проходить последовательности аргументов для вас при любых обстоятельствах. Также обратите внимание, что doseq
возвращает nil
в качестве значения; это хорошо только для побочных эффектов. Наконец я пропустил rest
из вашего кода; Вы могли иметь в виду (rest foundApps)
(если это не просто опечатка).
Также обратите внимание, что (apply println foundApps)
будет печатать все foundApps
в одной строке, тогда как (dorun (map println foundApps))
будет печатать каждый элемент foundApps
в отдельной строке.