我很难过。我试图将一个charlist转换回一个字符串,但它仍然失败:它很愚蠢,因为当我将结果从一个函数粘贴到另一个函数时它工作正常,但如果我在函数内部执行它失败...
实施例: 这工作
(删除" h ell o") 输出:'(#\ h#\ e#\ l ## \ l#\ o) (convertToString'(#\ h#\ e#\ l ## \ l#\ o)) 输出:"你好"
但这不起作用,如果在删除中调用conertToString,则会发生
(删除"地狱o") 输出:。 。 list-> string:合同违规 预期:( char的列表?) 给出:'(#\ l。" o")
(define deleteCh;driver
(lambda (s)
(delete(string->list s))))
(define delete
(lambda (input)
(cond
[(null? input) input]
[(equal? (car input) #\space) (delete (cdr input))]
[else (convertToString (cons (car input) (delete (cdr input))))])));this works without convertToString
(define convertToString
(lambda (charList)
(list->string charList)))
答案 0 :(得分:1)
您的问题出在delete
。对于每个不是空格的字符,您可以convertToString
得到结果。因此用字符串" abc"它会做
(convertToString (cons #\a (convertToString (cons #\b (convertToString (cons #\c '()))))))
提示..您需要convertToString
(list->string
的有趣包装),结果为deleteCh
,而不是每个子结果。