У нас есть курс, проект которого состоит в том, чтобы реализовать интерпретатор микросхем в C ++. В моей реализации я трактую ‘if’, ‘define’, ‘lambda’ как процедуры, поэтому в моей реализации допустимо вычислять ‘if’, ‘define’ или ‘lambda’, и также хорошо писать выражения типа ‘(apply define (quote (a 1)))’, которые будут привязывать ‘a’ к 1.
Но я обнаружил, что в ракетке и в мит-схеме «if», «define», «lambda» не могут быть оценены. Например,
Кажется, что они не процедуры, но я не могу понять, что они и как они реализованы.
Может кто-нибудь объяснить это мне? Заранее спасибо.
Задача ещё не решена.