2012-03-18 2 views

ответ

5

В списке, указанном в ответе, автомобиль 'when. Вы можете проверить это, но сначала давайте изменим имя списка что-то другое, для избежания имя столкновения с встроенной list процедуры:

(define lst '(when i type I 1 23 4 2)) 
(symbol? (car lst)) 
> #t 

#t (true) в последней строке показывает, что на самом деле первый элемент является символом. Если вам нужно преобразовать его в строку, просто сделать это:

(symbol->string (car lst)) 
> "when" 

EDIT:

Отвечая на вопрос в комментариях, это должно работать:

(define (isvariable? symbol) 
    (and (symbol? symbol) 
     (eqv? (string-ref (symbol->string symbol) 0) 
       #\?))) 
+0

Хорошо то, что это проблема с этим: '(define (isvariable? symbol) (equal? ​​(string-ref (string-> symbol symbol) 0) # \?))' и этот '(фильтр isvariable? '(? when dremd type 1 2 3 4)) ' – exilonX

+1

Во-первых, у вас есть символ' string->, когда вы намереваетесь ymbol-> string'. Во-вторых, список, который вы обрабатываете, содержит как символы, так и цифры, поэтому строка 'symbol-> string не будет выполнена для чисел. Я отредактировал свой ответ с реализацией, которая работает. –

+0

@IonelMerca Если этот ответ верен и был полезен для вас, пожалуйста, не забудьте нажать галочку слева от нее, чтобы принять ее. –

Смежные вопросы