2013-10-19 37 views
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)))))) 

假設我的地圖功能正常工作。我正在使用樹,並且想要知道如何使用前綴表示法編寫算術分析樹。我已經完成了算術解析樹的研究,並且我編寫了一個可以計算它們的值的函數,但是我不知道如何正確地遍歷它們以解決此問題。

+0

只要回答我的關於字符串的問題在這裏,我想提出關於序遍歷一個新的職位。 –

回答

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相比,這是一個毫不費力的任務,與追加列表類似。