Если ваша функция не принимает аргументы, вы можете использовать build-list
Пример:
#lang racket
;; The function you want to call many times
(define (f)
#t)
;; Use build list with a lambda to wrap your function because
;; build-list want a function takin integer as its second argument
(build-list 5 (lambda (x) (f)))
результат:
'(#t #t #t #t #t)
Редактировать: вы также можете определить функцию для переноса лямбды
(define (repeat-then-accumulate n f)
(build-list n (lambda (x) (f)))
)
Использование:
;; Using the f function defined earlier
(repeat-then-accumulate 10 f)
результат:
'(#t #t #t #t #t #t #t #t #t #t)
Edit2: если вы хотите иметь фиксированные аргументы, вы можете сделать что-то вроде
#lang racket
;; The function you want to call many times
(define (f a b)
(+ a b))
(define (repeat-then-accumulate n f args)
(build-list n (lambda (x) (apply f args)))
)
Использование:
(repeat-then-accumulate 10 f '(3 5))
Результат:
'(8 8 8 8 8 8 8 8 8 8)