В схеме я запускаю (quote (+ 2 3)) returns (+ 2 3)
. Из того, что я понял, цитата просто попросила Scheme не оценивать мое выражение для какой-то цели. Я пытаюсь сделать список (+ 2 3)
без использования цитаты. Так что я пробовал:
Введенные: возвращение (cons '+' (cons 2 (cons 3 '())))
Scheme в: (+ cons 2 (cons 3 (quote())))
- Я не понимаю, почему я получил это возвращаемое значение. Я надеялся на (+ 2 3)
типизированных: возвращение (cons '+' (2,3))
Scheme в: (+ 2 3)
- Я не понимаю, как это работает. Итак, есть (cons '+' (2,3))
так же, как (quote (+ 2 3))
?Представление списка цитируемых выражений в схеме
ответ
'expression
такой же a (quote expression)
и будет expression
не оценено.
Когда вы пишете (cons '+ '(cons 2 (cons 3 '())))
, вы указываете как +
, так и второй аргумент, (cons 2 (cons 3 '()))
. '
не имеет маркера конца.
При отображении пары лисповской системы по умолчанию для отображения пары с парой хвоста в виде списка, если вы задавались вопрос, почему она не превратилась в (+ . (cons 2 (cons 3 (quote()))))
реализация может выбрать способ отображения '(quote())
и ''()
. Шахтное шоу '()
пока ваше шоу (quote())
. Они представляют собой то же самое, так что это не совсем так, как в других вещах, чем визуализация.
`(1 , 2)
такое же, как (list '1 2)
, так как вы являетесь 2
. К счастью для вас это число, и он всегда оценивает себя. Возможно, вы, хотя запятая, были чем-то вроде разделения между элементами, но это не так. Это просто упростить запись большой структуры данных, где только несколько элементов являются переменными.
(define (test e)
`(a list with ,e representing some wanted structure))
(test 'test) ; ==> (a list with test representing some wanted structure)
У вас слишком много кавычек. Вы хотите '(cons '+ ...)', а не '(cons' + '...)'. –
@AlexisKing О, я думал, что мне нужно «+» сказать, что + является символом then »(), чтобы указать список NULL –
@AnonymousGal Символ' + '. Символ будет записан как '# \ +'. Когда вы используете две одинарные кавычки, первый цитирует символ '+' -symbol, а второй цитирует следующий список. – jkiiski