我需要帮助的让利形式和无名程序格式之间的转换(I need help converting betw

2019-10-16 13:55发布

我尝试从一个让形式转换为unamed程序的形式,我只是无法得到它的窍门。

该Let过程是这样的。

(define max-recursive (lambda (lst)
      (if  (null? (cdr lst))
           (car lst)
           (let ((m0 (car lst))
                 (m1 (max-recursive (cdr lst))))
                 (if (> m0 m1)
                     m0
                     m1
                 )
           )
      )))

什么我目前所做的就是这

(define max-recursive (lambda (lst)
      (if  (null? (cdr lst))
        (car lst)
((lambda (m0 m1)
   (if (> m0 m1)
       m0
       m1
      )
   )
   car lst (max-recursive (cdr lst)))
      )))

任何帮助,将不胜感激谢谢。

Answer 1:

你几乎得到它! 一对夫妇只括号人失踪周围的表达car lst 。 尝试这个:

(define max-recursive
  (lambda (lst)
    (if (null? (cdr lst))
        (car lst)
        ((lambda (m0 m1)
           (if (> m0 m1)
              m0
              m1))
         (car lst) ;here was the error
         (max-recursive (cdr lst))))))

解释如下。 一个let的形式像这样的:

(let ((x 10))
  x)

......仅仅是一个语法糖lambda应用于一些参数表达。 以前let是等价于:

((lambda (x)
   x)
 10)

请注意,在两种情况下,值10结束绑定到变量名为x和身体let表达式是相同的主体lambda表达



文章来源: I need help converting between the let form and unnamed procedure form