您尝试使用的语法是正确的,只需使用内部函数的名称作为外部函数返回的值.例如,您可以写:
(define (incrementer x)
(define (adder y)
(+ x y))
adder)
(define incrementer-by-1 (incrementer 1))
(define incrementer-by-2 (incrementer 2))
(incrementer-by-1 3)
(incrementer-by-1 10)
(incrementer-by-2 15)
Run Code Online (Sandbox Code Playgroud)
正如评论所说,记住这(define (f x) y)只是一个缩写(define f (lambda(x) y)),前一个函数相当于:
(define (incrementer x)
(lambda (y)
(+ x y)))
Run Code Online (Sandbox Code Playgroud)
作为另一个示例,您可以返回先前定义的函数:
(define (make-positive x)
(abs x))
(define (make-negative x)
(- (abs x)))
(define (same-signer x)
(if (>= x 0)
make-positive
make-negative))
((same-signer 3) -2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |