(方案)可以定义一个函数但不能调用它

时间:2014-04-16 02:40:13

标签: scheme racket

我正在尝试编写一个在列表上调用地图函数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

我知道它与语法有关,但我不能为我的生活弄清楚它是什么。会感激一些帮助。

1 个答案:

答案 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))))