Изучив указатель, я обнаружил два места, где он определен: Сноска 29 в разделе 3.3 и Сноска 10 в Разделе 4.1. Цитирую оба:
Обратите внимание, что выражение if в этой процедуре не имеет ‹ альтернативного › выражения. Такой «однорукий оператор if» используется для принятия решения о том, следует ли что-то делать, а не для выбора между двумя выражениями. Выражение if возвращает неопределенное значение, если предикат ложный и нет альтернативы ‹ ›.
Значение выражения if, когда предикат ложен и альтернативы нет, в схеме не указано; здесь [в The Metacircular Evaluator] мы решили сделать его ложным. Мы будем поддерживать использование переменных true и false в оцениваемых выражениях, связывая их в глобальной среде. См. раздел 4.1.4.
Я признаю, что мне следовало подумать о том, чтобы обратиться к индексу, прежде чем обращаться к Stack Overflow. Очевидно, интернет прогнил мой мозг. Однако я надеюсь, что на этот вопрос есть лучший ответ, чем тот, который я дал здесь. Это определено двумя главами после того, как вам это нужно, даже если оно правильное, не очень приятное.
С другой стороны, комментарии codybartfast справедливо указывают на то, что вам не нужно понимать процедуру, описанную в упражнении 1.22, чтобы решить вопрос. На самом деле, решив это самостоятельно, становится ясно, что я очень много думал об этом. Ее можно решить менее чем за пять строк. Кроме того, также было указано, что, хотя первые несколько слов соответствуют стандарту для Scheme, вторая цитата выше в основном говорит о реализации, которая создается в главе 4, а не о чем-либо, что, как ожидается, будет использоваться или использоваться. понятно в предыдущих главах.
person
J. Mini
schedule
09.11.2020