Я определил is-string?
:
(define (is-string? expr)
(string? expr))
, а также interpret-string
:
(define (interpret-string expr env)
expr)
Вот функции, которые я написал:
(define (string-equals? expr)
(and
(list? expr)
(= 3 (length expr))
(equal? '= (first expr))))
(define (interpret-string expr env)
(=
(internet (second expr) env)
(interpret (third expr) env)))
Это интерпретатор для строки:
((is-string? expr) (interpret-string expr env))
Когда я вхожу в эту строку, чтобы проверить, работает ли она:
(check-expect (is-string-equals? ’(string-equals "abc" "abc"))
#t)
Я получаю сообщение об ошибке:
check-expect encountered the following error instead of the expected value, #t.
:: reference to undefined identifier: is-string-equals?
Что я должен сделать для is-string-equals
? Я понятия не имею.
вот фактический вопрос, заданный в соответствии с просьбой.
- Расширить интерпретатор типом данных «string». Вам нужно будет написать функции:
- есть строка
- интерпретируют строка
и измените функцию интерпретации для поддержки строкового типа данных.
Также добавьте две функции для работы со строками в интерпретируемом языке:
- строка-равно? проверить, совпадают ли две заданные строки.
string-join для возврата новой строки, образованной соединением двух строк togeter.
Убедитесь, что ваши функции прошли следующие тесты:
(проверка-ожидание (is-string-equals? ’(String-equals" abc "" abc "))
#t)
(проверка-ожидание (интерпретировать-строку-равно) (строка-равно "abc", "abc") (make-env))
#t)