Посмотрите на процедуру primitive-procedure-objects
, вот где тег 'primitive
добавляется к элементам списка primitive-procedures
, который содержит примитивные операции, доступные интерпретатору.
В свою очередь, primitive-procedure-objects
вызывается внутри setup-environment
, который используется для создания начальной среды для интерпретатора.
При оценке выражения, такого как (+ 1 2)
, оценщик просто полностью опускается до конца при анализе случая eval
, сопоставляя предикат application?
, который вызывает apply
, а затем (eval (operator exp) env)
в первом элемент выражения. В свою очередь, это соответствует variable?
в анализе случая, который вызывает lookup-variable-value
, который возвращает процедуру, которую мы пометили 'primitive
в setup-environment
. Уф!