Это кажется простым вопросом; возможно, он настолько прост, что трудно найти поиск, который найдет ответ. В Scheme (в частности, Хитрость реализации, если это имеет какое-то значение) как мне оценить то, что было процитировано?
Вот что я пытаюсь сделать.
Мне в основном нужно убедиться, что определяемая мной функция получает свои аргументы, оцениваемые в конкретном порядок, потому что побочные эффекты, вызванные оценкой одного аргумента, зависят от во время оценки других аргументов. Однако Scheme говорит, что аргументы можно оценивать в любом порядке, поэтому я хочу вручную принудительно использовать его, цитируя аргументы, а затем вручную оценивая их в
Похоже, что "eval" предполагается , чтобы делать то, что я хочу, но у него есть две проблемы:
Я пробовал другие уловки, например, сборку вверх лямбда:
(list 'lambda '() '(car (b c)))
, но кажется, что затем это нужно будет вычислить для генерации процедуры. Я также пробовал:
(list lambda '() '(car (b c)))
, но это возвращает "примитивно-встроенный макрос", который тоже не работает.
Изменить: Похоже, что макрос будет работать для управления порядком оценки: (defmacro test1 (ab) `(begin, b, a))