Лямбда-функция, которую вы передаете, должна принимать один аргумент, который является индексом элемента (как вы можете видеть из сообщения об ошибке: (exact-nonnegative-integer? . -> . any/c)
). Это полезно, когда вы пытаетесь создать список, элементы которого различаются в зависимости от позиции индекса. Например, (build-list 5 (lambda (n) n))
производит '(0 1 2 3 4)
В вашем случае аргумент бесполезен, так как список, который вы хотите построить, имеет одинаковое содержимое для всех элементов. Тем не менее, вы все равно должны принять аргумент. То есть используйте (build-list 5 (lambda (n) '*))
. Если вы находите это уродливым, есть также thunk*
, который является сокращением для создания лямбды, которая принимает все, но игнорирует аргументы. Таким образом, вы также можете написать (build-list 5 (thunk* '*))
. Если вы используете #lang racket/base
, вам нужно (require racket/function)
, чтобы использовать thunk*
.