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

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

((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<? не съществува в схемата. Знам, че това е стандартна процедура в езика на рекета, но това не е Scheme, а подобен диалект.

Мисля, че можете да го дефинирате така:

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