我是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”; ...然后将此字符串作为输出。 –