【发布时间】:2014-10-22 19:22:14
【问题描述】:
我是一名电气工程师,正在尝试在互联网上学习方案。我想取 sin x 的平方,但我失败了。我想我需要一个使 (Number,Number) - (Number,Number) 的函数。所以它应该采用 lambda x 和 lambda f 并计算平方(f x)。但我被卡住了,我不能写这段代码。有人能写吗?
【问题讨论】:
我是一名电气工程师,正在尝试在互联网上学习方案。我想取 sin x 的平方,但我失败了。我想我需要一个使 (Number,Number) - (Number,Number) 的函数。所以它应该采用 lambda x 和 lambda f 并计算平方(f x)。但我被卡住了,我不能写这段代码。有人能写吗?
【问题讨论】:
只需嵌套函数调用。一个简单的方法是:
(define (square x)
(* x x))
(square (sin x))
或者创建一个组合函数:
(define square-sin (compose square sin))
(square-sin x)
【讨论】:
这里有两个想法:
(define (sqr-f f) (compose sqr f))
用法:
((sqr-f sin) 1)
或者一个非curried版本:
(define (sqr-f-u f . x) (sqr (apply f x)))
用法:
(sqr-f-u + 1 2)
【讨论】: