In
(define (char-display char-list line-width)
(for ([char (in-list char-list)]
[i (in-range line-width)])
...))
char
и i
проходят через char-list
и цифры 0, 1, ..., linewidth-1
соответственно.Они делают это параллельно.Когда одна последовательность исчерпана, цикл останавливается.Здесь числовая последовательность самая короткая, и вы видите только одну строку.
Первое изменение заключается в том, чтобы изменить второе предложение for на
[i (in-naturals)]
Второе изменение - это порядок аргументов.для модуля (их нужно поменять местами):
(modulo i line-width)
Третье изменение - всегда отображать символ.Только новая строка может отображаться или не отображаться.
(define (char-display char-list line-width)
(for ([char (in-list char-list)]
[i (in-naturals)])
(when (zero? (modulo i line-width))
(unless (zero? i)
(newline)))
(display char)))