for-each
Функція for-each у Scheme застосовує процедуру до кожного елемента списку (або кількох списків). На відміну від map, яка повертає новий список із результатами, for-each використовують для побічних ефектів, таких як друк або оновлення змінних.
Найпростіша форма for-each виглядає так:
(for-each procedure list)- Процедура: функція для застосування до кожного елемента списку.
- Список: список, елементи якого будуть оброблені.
Приклад: друк списку
(define (print-item x)
(lumi-message (number->string x)))
(for-each print-item (list 1 2 3 4))- Тут функція
print-itemзастосовується до кожного елемента списку(1 2 3 4). - Кожне число виводиться послідовно.
Вивід: 1 2 3 4
Як це працює
Перебір кожного елемента:
- надана процедура виконується для кожного елемента списку по порядку.
Побічні ефекти:
- типові побічні ефекти — друк, журналювання або зміна зовнішніх змінних. На відміну від
map,for-eachне повертає новий список.
- типові побічні ефекти — друк, журналювання або зміна зовнішніх змінних. На відміну від
Приклад: кілька списків
Якщо надано кілька списків, for-each обробляє відповідні елементи з кожного списку.
(define (sum-and-print x y)
(lumi-message (number->string (+ x y))))
(for-each sum-and-print (list 1 2 3) (list 4 5 6))- Функція
sum-and-printпідсумовує відповідні елементи з двох списків і виводить результати.
Вивід: 5 7 9
Резюме
- Функція
for-eachкорисна для виконання побічних ефектів на кожному елементі списку. - На відміну від
map,for-eachне створює новий список — вона зосереджується виключно на побічних ефектах процедури. - Вона може обробляти кілька списків одночасно, застосовуючи процедуру до відповідних елементів.
За допомогою for-each можна ефективно обробляти списки, коли метою є виконання дій, а не перетворення даних.