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。这将导致错误,参数编号不匹配。