функции схемы - PullRequest
       6

функции схемы

0 голосов
/ 10 января 2012

Я определил 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? Я понятия не имею.

вот фактический вопрос, заданный в соответствии с просьбой.

  1. Расширить интерпретатор типом данных «string». Вам нужно будет написать функции:
  2. есть строка
  3. интерпретируют строка и измените функцию интерпретации для поддержки строкового типа данных. Также добавьте две функции для работы со строками в интерпретируемом языке:
  4. строка-равно? проверить, совпадают ли две заданные строки.
  5. string-join для возврата новой строки, образованной соединением двух строк togeter. Убедитесь, что ваши функции прошли следующие тесты:

    (проверка-ожидание (is-string-equals? ’(String-equals" abc "" abc ")) #t)

    (проверка-ожидание (интерпретировать-строку-равно) (строка-равно "abc", "abc") (make-env)) #t)

1 Ответ

2 голосов
/ 10 января 2012

Я вижу, куда это идет - это для класса PL, и вы расширяете существующий интерпретатор, чтобы он мог обрабатывать строки и сравнения строк - но мне кажется, что это поможет вам много , чтобы добавить операторы цели к вашим функциям и тестовые примеры для всех них.Начните сверху.Что is-string? должен делать?Напишите контрольные примеры, чтобы убедиться, что он делает то, что должен.Пройдите вниз.

Кроме того, позор своему инструктору за то, что он дал вам контрольные примеры:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...