【问题标题】:Explanation of complex evaluation for this Scheme procedure using lambdas使用 lambdas 解释此 Scheme 过程的复杂评估
【发布时间】:2018-05-27 23:11:36
【问题描述】:

我想知道以下代码如何计算为 15。

((lambda(x y) (+ (x * y) (x + y))) (lambda (a b) (a b b)) 3)

我已经看了一段时间,似乎无法理解为什么评估不会导致错误。有人可以提供有关如何评估为 15 的详细分步说明吗?

【问题讨论】:

    标签: scope scheme racket evaluation r5rs


    【解决方案1】:

    如果您命名 lambda,也许更容易看到正在发生的事情。例如,

    (define (f x y)
      (+ (x * y) (x + y)))
    
    (define (g a b)
      (a b b))
    

    那么表达式((lambda (x y) (+ (x * y) (x + y))) (lambda (a b) (a b b)) 3)就变成了:

    (f g 3)
    

    它的计算结果为:

    (f g 3)
    => (+ (g * 3) (g + 3))
    => (+ (* 3 3) (+ 3 3))
    => (+ 9 6)
    => 15
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      相关资源
      最近更新 更多