Scheme 使用局部函数的简单函数

Scheme 使用局部函数的简单函数,scheme,local,racket,Scheme,Local,Racket,为什么这个函数只是给一个数字加一个1,而完全忽略乘法 (define (ev n) (local [(define (res l) ( * 2 n))] (+ 1 n))) …因为您没有在任何地方调用res。一个local特殊表单对于定义助手过程很有用,但仅此而已——定义它们。如果不显式调用,它们将什么也不做;还要注意表达式(*2n)是n乘以2,但是忽略了l参数。我不确定你打算写什么,也许是这样的 (define (ev n)

为什么这个函数只是给一个数字加一个1,而完全忽略乘法

   (define (ev  n)
      (local [(define (res l)
                ( * 2 n))]

      (+  1 n)))

…因为您没有在任何地方调用
res
。一个
local
特殊表单对于定义助手过程很有用,但仅此而已——定义它们。如果不显式调用,它们将什么也不做;还要注意表达式
(*2n)
n
乘以2,但是忽略了
l
参数。我不确定你打算写什么,也许是这样的

(define (ev n)
  (local [(define (res l)
            (* 2 l))]

    (res (+ 1 n))))

(ev 3)
=> 8