String 在函数中将列表转换为字符串的方案

String 在函数中将列表转换为字符串的方案,string,recursion,scheme,binary-tree,binary-search-tree,String,Recursion,Scheme,Binary Tree,Binary Search Tree,我不知道在递归调用函数时如何将列表转换为函数中的字符串。例如,我的代码如下所示: (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) #\+)

我不知道在递归调用函数时如何将列表转换为函数中的字符串。例如,我的代码如下所示:

(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))))))

假设我的map函数对此工作正常。我正在处理树,还想知道如何用前缀表示法编写算术解析树。我对算术解析树进行了研究,并编写了一个函数来计算它们的值,但我不知道如何正确地遍历它们来解决这个问题。

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

(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
相比,这是一项轻松的任务。

在这里回答我关于字符串的问题,我正在写一篇关于预排序遍历的新文章。