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


Як це працює

  1. Перебір кожного елемента:

    • надана процедура виконується для кожного елемента списку по порядку.
  2. Побічні ефекти:

    • типові побічні ефекти — друк, журналювання або зміна зовнішніх змінних. На відміну від 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 можна ефективно обробляти списки, коли метою є виконання дій, а не перетворення даних.