Если я определяю список в схеме, как этоттипа (список автомобилей) в схеме
(define list '(when i type I 1 23 4 2))
Что тип вещей (список автомобилей) возвращается? И еще один вопрос: могу ли я преобразовать его в строку?
Если я определяю список в схеме, как этоттипа (список автомобилей) в схеме
(define list '(when i type I 1 23 4 2))
Что тип вещей (список автомобилей) возвращается? И еще один вопрос: могу ли я преобразовать его в строку?
В списке, указанном в ответе, автомобиль '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)
#\?)))
Хорошо то, что это проблема с этим: '(define (isvariable? symbol) (equal? (string-ref (string-> symbol symbol) 0) # \?))' и этот '(фильтр isvariable? '(? when dremd type 1 2 3 4)) ' – exilonX
Во-первых, у вас есть символ' string->, когда вы намереваетесь ymbol-> string'. Во-вторых, список, который вы обрабатываете, содержит как символы, так и цифры, поэтому строка 'symbol-> string не будет выполнена для чисел. Я отредактировал свой ответ с реализацией, которая работает. –
@IonelMerca Если этот ответ верен и был полезен для вас, пожалуйста, не забудьте нажать галочку слева от нее, чтобы принять ее. –