Вы ищете map
, хотя вы, вероятно, хотели бы знать, что Схема также имеет for-each
. map
делает именно то, что вы хотите с every
. Он что-то делает с каждым элементом в списке, возвращая новый список результатов.
Вы могли бы даже сказать
(define every map)
Вы можете получить свою first
функцию, написав
(define (first symbol)
(string->symbol (string (string-ref (symbol->string symbol) 0))))
Хотя это плохой стиль Схемы. Это похоже на древний Лисп 60-х или 70-х годов, еще до того, как в языке появились строки.
Во всяком случае, теперь вы можете сказать
(map first '(here comes everybody))
=> (h c e)
for-each
создает некоторый побочный эффект для каждого элемента в списке:
(define initials (map first '(here comes everybody)))
(for-each display initials)
=> hce