0

当我递归调用它时,我不确定如何将列表转换为函数中的字符串。例如,我的代码如下:

(define (pre-order T)
 (define (conv x)
    (cond ((number? x) (number->string x))
    ((char? x) (string x))))

(map-diff (lambda (x) (conv x)) T)

   (cond ((null? T) "")
    ((eq? (value T) #\+)
           (cons "+" (pre-order (right T))(pre-order (left T))))
     ((eq? (value T) #\*)
           (cons "*" (pre-order (right T))(pre-order (left T))))
     ((eq? (value T) #\-)
           (cons "-" (pre-order (left T))))
     ((eq? (value T) #\/)
           (cons "/" (pre-order (left T))))
     (else (cons (value T) (pre-order (left T))))))

假设我的地图功能可以正常工作。我正在使用树,并且还想知道如何用前缀表示法编写算术分析树。我已经对算术解析树进行了研究,并且我编写了一个可以计算它们的值的函数,但是我不知道如何正确地遍历它们来解决这个问题。

4

1 回答 1

1

字符串是一个字符序列。字符列表可以很容易地转换为字符串。

(define charlst '(#\H #\e #\l #\l #\o))
(list->string charlst); ==> "Hello"

如果你有一个字符串列表,你可以string-append

(define stringlst '("A" "B" "C"))
(apply string-append stringlst) ; ==> "ABC"

由于您似乎正在使用字符,因此在列表和结果中使用它们会更容易,因为与附加列表list->string相比,这是一项轻松的任务。string-append

于 2013-10-19T23:33:13.057 回答