将一个大引号转换为方案中的字符串/列表

时间:2012-05-02 09:54:42

标签: scheme y-combinator racket

我有这个任务要做,我需要解析一个错误的书面递归程序,并修复它。 例如: 这样:

(let ((fib (lambda (n) 
             (cond    ((= n 0) 1) 
                         ((= n 1) 1) 
                        (else (+ (fib (- n 1)) (fib (- n 2))))))))
           (fib n))

转换为:

(let ((fib (lambda (n fib-param) 
                    (cond ((= n 0) 1) 
                              ((= n 1) 1) 
                             (else (+ (fib-param (- n 1) fib-param)  
                                      (fib-param (- n 2) fib-param))))))) 
  (fib n fib)) 

程序以3个部分作为引用:“let”,let和body。 我想解析第二部分(意思是,我想列出一个列表,其中的每个术语都是“let”表达式中的单个单词)但是我似乎无法解决它,无论我尝试了什么。

我正在使用drRacket方案。

感谢并感谢抱歉。

1 个答案:

答案 0 :(得分:1)

您可能需要阅读:http://www.dreamsongs.com/Files/WhyOfY.pdf,其中介绍了如何进行此转换。您的作业是一种经典的编程语言技术,仅用程序应用程序进行递归。