Scheme 只评估一次价值
如果没有让(gx)只计算一次的帮助,我如何更改代码Scheme 只评估一次价值,scheme,racket,Scheme,Racket,如果没有让(gx)只计算一次的帮助,我如何更改代码 (define f (lambda (x) (i (g x) (h (g x))))) 您可以使用let编写解决方案,然后使用let和lambda之间的以下等价关系对其进行转换: (let ((name expression1)) expression2) == ((lambda (name) expression2) expression1) 您可以使用let编写解决方案,然后使用let和lambda之间的以下
(define f
(lambda (x)
(i (g x) (h (g x)))))
您可以使用
let
编写解决方案,然后使用let
和lambda
之间的以下等价关系对其进行转换:
(let ((name expression1))
expression2)
==
((lambda (name) expression2) expression1)
您可以使用
let
编写解决方案,然后使用let
和lambda
之间的以下等价关系对其进行转换:
(let ((name expression1))
expression2)
==
((lambda (name) expression2) expression1)
如果不允许使用let,我将在
定义中使用定义:
(define f
(lambda (x)
(define y (g x))
(i y (h y))))
然而,我想另一个答案是理想的。因为它使用万能的lambda(
:)。如果不允许let,我会在定义中使用定义
:
(define f
(lambda (x)
(define y (g x))
(i y (h y))))
然而,我想另一个答案是理想的。因为它使用万能的lambda(
:)。为什么“没有let
”的帮助?”?您使用的语言是否没有let
,例如BSL?或者是因为家庭作业或其他原因造成的其他限制?由于我们的家庭作业,我们不允许使用let…为什么“没有let
”的帮助?您使用的语言是否没有let
,例如BSL?或者是家庭作业或其他什么的限制?由于我们的家庭作业,我们不允许使用let…当您使用内部定义时,您不应该进一步缩进正文:(i y…)
应与前一行处于相同的缩进级别。使用内部定义时,不应进一步缩进正文:(i y…
应与前一行处于相同的缩进级别。