【发布时间】:2020-02-27 19:41:11
【问题描述】:
我正在尝试编写一个解析字符串并返回字符串中所有数字字符之和的递归方案函数。
我想我需要做这样的事情:
(define (sumNums s)
(if (null? s) 1
(if (char-numeric? (car s))
(+ ((car s) (sumNums (cdr s))))
(sumNums(cdr s)))))
每当我尝试使用字符串作为参数运行它时,它都会给我一个错误,说它需要一对。如何在函数中指示我将给它一个字符串?
此外,我无法将 (car s) 作为字符传递给 (char-numeric?) 过程。只需使用一个简单的示例函数:
(define (isDigit c)
(if(char-numeric? c)
(display "is a number")
(display "is not a number")))
(isDigit #\5)
如果我在函数调用的输入之前明确包含#\,如上所述,它可以正常工作。但是函数中是否有任何方法可以强制将输入解释为字符?
(define (isDigit #\c)
(if(char-numeric? c)
(display "is a number")
(display "is not a number")))
我尝试了上面的函数,它给出了未绑定 c 的错误。这个:
(isDigit #\(5))
也不行。所以在方案中,我什至不能强制将表达式 (5) 解释为字符 5?
非常感谢您的帮助,我刚开始学习方案,发现它非常不直观。
【问题讨论】:
标签: types type-conversion scheme