Я пытаюсь написать функцию рекурсивной схемы, которая анализирует строку и возвращает сумму всех числовых символов в строке.
Я думаю, мне нужно будет сделать что-то вроде этого:
(define (sumNums s)
(if (null? s) 1
(if (char-numeric? (car s))
(+ ((car s) (sumNums (cdr s))))
(sumNums(cdr s)))))
Всякий раз, когда я пытаюсь запустить его со строкой в качестве аргумента, он выдает мне сообщение о том, что ожидает пару. Как указать в функции, что я дам ей строку?
Кроме того, у меня возникают проблемы при передаче (car) в качестве символа для процедуры (char-Numberri c?). Просто используя простой пример функции:
(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")))
Я попробовал вышеуказанную функцию, и она выдает ошибку для unbound c. Это:
(isDigit #\(5))
тоже не работает. Так что в схеме я даже не могу заставить ее заставить выражение (5) интерпретировать как символ 5?
Большое спасибо за помощь, я только начинаю изучать схему и нахожу ее очень неинтуитивной .