【发布时间】:2016-06-17 20:16:41
【问题描述】:
我需要编写一个Scheme高阶函数,它以一个有两个参数的函数作为参数,并返回该函数的柯里化版本。到目前为止,我在柯里化函数方面了解很多:
(define curriedFunction (lambda (x)
(if (positive? x)
(lambda (y z) (+ x y z))
(lambda (y z) (- x y z)))))
(display ((curriedFunction -5) 4 7))
(display "\n")
(display ((curriedFunction 5) 4 7))
如果 x 为负数,则减去 x y 和 z。如果 x 为正,则将 x、y 和 z 相加。
就高阶函数而言,我理解这一点:
(display (map (lambda (x y) (* x y)) '(1 2 3) '(3 4 5)))
第三,我非常了解将函数作为参数传递:
(define (function0 func x y)
(func x y))
(define myFunction (lambda (x y)
(* x y)))
(display (function0 myFunction 10 4))
在上面的代码中,我知道函数“myFunction”也可以这样写:
(define (myFunction x y)
(* x y))
所以现在你知道我在 Scheme 编程和语法方面的水平了。 现在回到回答编写一个带有两个参数的函数作为其参数并返回该函数的柯里化版本的 Scheme 高阶函数的问题。我如何将这些概念联系在一起?提前谢谢你,我真的很感激。
【问题讨论】:
标签: scheme higher-order-functions currying