ошибка идентификатора схемы в модуле in: символ ‹?

Следующая строка в моем коде дает мне ошибку несвязанного идентификатора.

((symbol<? x (car l)) #f)

может ли кто-нибудь объяснить мне, почему я получаю эту ошибку и как я могу ее решить.

Вот весь код:

; tests membership in ordered list of symbols

(define (member? x l)
 (cond

   ((null? l) #f)
   ((symbol=? x (car l)) #t)
   ((symbol<? x (car l)) #f)
   (else (member? x (cdr l)))))

person xmantra23    schedule 28.04.2014    source источник
comment
symbol<? не существует ни в одной известной мне схеме. Вы должны преобразовать его в строку.   -  person leppie    schedule 28.04.2014
comment
как мне преобразовать его в строку.   -  person xmantra23    schedule 28.04.2014


Ответы (2)


Предиката symbol<? нет, но есть string<?, поэтому, если мы преобразуем символ в строку, мы сможем выполнить сравнение:

(define (symbol<? s1 s2)
  (string<? (symbol->string s1)
            (symbol->string s2)))
person Óscar López    schedule 28.04.2014

symbol<? не существует в схеме. Я знаю, что это стандартная процедура в языке рэкета, но это не схема, а аналогичный диалект.

Я думаю, вы можете определить это так:

(define (symbol<? a b)
  (string<? (symbol->string a) 
            (symbol->string b)))
person Sylwester    schedule 28.04.2014