Forms 我需要帮助在let表单和未命名过程表单之间转换
我正在尝试从一个let表单转换成一个未经修改的过程表单,但我就是搞不懂其中的诀窍 let程序是这样的Forms 我需要帮助在let表单和未命名过程表单之间转换,forms,scheme,procedure,let,Forms,Scheme,Procedure,Let,我正在尝试从一个let表单转换成一个未经修改的过程表单,但我就是搞不懂其中的诀窍 let程序是这样的 (define max-recursive (lambda (lst) (if (null? (cdr lst)) (car lst) (let ((m0 (car lst)) (m1 (max-recursive (cdr lst)))) (if (> m0 m1
(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)))
)))
任何帮助都将不胜感激。谢谢。你差点就得到了!表达式
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))))))
解释如下。A让
形成如下形式:
(let ((x 10))
x)
。。。只是应用于某些参数的lambda
表达式的语法糖。前面的let
相当于:
((lambda (x)
x)
10)
请注意,在这两种情况下,值
10
最终都绑定到一个名为x
的变量,并且let
表达式的主体与lambda
表达式的主体是相同的!表达式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))))))
解释如下。A让
形成如下形式:
(let ((x 10))
x)
。。。只是应用于某些参数的lambda
表达式的语法糖。前面的let
相当于:
((lambda (x)
x)
10)
请注意,在这两种情况下,值10
最终都绑定到名为x
的变量,并且let
表达式的主体与lambda
表达式的主体相同谢谢,但我在发布几分钟后才计算出来。谢谢,但我在发布几分钟后才计算出来。