我是Scheme的新手,我正在嘗試編寫一個程序,在每個步驟中都將一個符號添加到字符串中,並在最後返回字符串。 例如,使像一個字符串「TFTFT ......」在程序中向字符串變量添加符號
(define str "")
(define foo
(lambda (x)
(
(if(eqv? (car x) 3) (string-append str "T") (string-append str "F"))
(if(eqv? (car (cdr x)) 4) (string-append str "T") (string-append str "F"))
(if(eqv? (cdr (cdr x)) 5) (string-append str "T") (string-append str "F"))
)))
我想要的結果如下:
> (foo '(3 4 5))
"TTT"
> (foo '(3 6 5))
"TFT"
我知道,串追加一部分是不正確的。你能幫我一下嗎?
此外,當我嘗試運行該程序時出現錯誤: 應用程序:不是一個過程; 預期考慮到可以應用到參數的過程 : 參數...... 「T」: 「F」 「F」
嗯,一件事'(cdr(cdr x))''會返回一個列表。你想''(car(cdr(cdr x)))'元素'5'。 – kbshimmyo
是的,你是對的。我沒有仔細寫。我只是設計它來指出我的問題,即在遞歸過程中如何「將一些符號附加到一個字符串」。例如: : initila value:str =「」; next recurion:str =「0」; next recurion:str =「01」; next recurion:str =「011」; next recurion:str =「0110」; ...然後將此字符串作爲輸出。 –