我正在尝试编写一个在列表上调用地图函数N次的函数。这是一个非常简单的问题:
(define (mapNtimes f x L)
(if (= x 0)
L
(mapNtimes (f (- x 1) map (f L)))))
当我尝试调用我的函数时,Dr Racket给出了以下错误。使用这样的语句:
(mapNtimes ((lambda (x) (* 2 x))) 2 '(1 2 3))
它给了我这个错误
expected: number?
given: '(3 5 1)
argument position: 2nd
other arguments...:
2
我知道它与语法有关,但我不能为我的生活弄清楚它是什么。会感激一些帮助。
答案 0 :(得分:0)
也许您是Scheme的新手,并且不熟悉调用Scheme函数的语法。
给定函数f
,您可以使用:
(f arg1 arg2)
不
f (arg1 arg2)
这适合我。
(define (mapNtimes f x L)
(if (= x 0) L
(mapNtimes f (- x 1) (map f L))))