Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 我需要帮助在let表单和未命名过程表单之间转换_Forms_Scheme_Procedure_Let - Fatal编程技术网

Forms 我需要帮助在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

我正在尝试从一个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)
                     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
表达式的主体相同

谢谢,但我在发布几分钟后才计算出来。谢谢,但我在发布几分钟后才计算出来。