Scheme中的Scheme-lambda表达式
有人能解释一下原因吗Scheme中的Scheme-lambda表达式,scheme,Scheme,有人能解释一下原因吗 (define gg (lambda (ff x) (ff x x x)) 所有这些属性都有吗?谢谢 gg requires two arguments when called gg's first argument should be a function gg's first argument should be a function that accepts 3 arguments gg是一个具有两个参数的lambda,ff和x ff用于lambda内部的表达式(
(define gg (lambda (ff x) (ff x x x))
所有这些属性都有吗?谢谢
gg requires two arguments when called
gg's first argument should be a function
gg's first argument should be a function that accepts 3 arguments
gg
是一个具有两个参数的lambda,ff
和x
ff
用于lambda内部的表达式(ff x x)
,因此ff
应该是可调用的(ff x x)
有三个参数,因此ff
应该是一个包含三个参数的函数我想(ff x x)是如何处理lambda的?从某种意义上说,lambda的内部函数。你所说的“lambda是如何处理的”或“内部函数”是什么意思?(lambda(ff x)(ff x x x))2,2被传递到lambda表达式ff x,然后被ff x x x处理这是一个无效的表达式,因为lambda需要两个参数,而你只传递一个。但是,您可以使用
((lambda(ff x)(ff x x x))+2)
,这与调用(+2)
相同。在本例中,ff
是+
,x
是2。而+
恰好是一个可以接受任意数量参数的函数,特别是它可以接受3个参数。@Williammcarty新的lambda表达式中有两个函数调用。忽略第一次调用的结果,返回第二次调用的结果。在第一个调用中,ff
接收3个参数;在第2-4个参数中。因此,它必须能够接收3或4个参数最上面的lambda表达式需要两个参数,ff
和x
,但您给它5个值:+
,和2
s。这将导致错误,参数编号不匹配。