Уровни гомойконичности [закрыто]

Это продолжение моегопредыдущий вопрос, Я не уверен, что код на Лиспе так же гомоичен, как машинный код на архитектуре фон Неймана. Мне кажется очевидным, что в обоих случаях код представляется в виде данных, но также очевидно, что вы можете использовать это свойство гораздо более свободно в машинном коде, чем в Лиспе.

При работе с машинным кодом самоизменяющийся код настолько прост, что это происходит постоянно, часто случайно и с (по моему опыту) веселыми результатами. При написании простой программы «печать чисел 0-15» у меня может быть ошибка «выключено одним» с одним из моих указателей. Я закончу тем, что случайно выгружу все, что находится в Регистре 1, в адрес в памяти, который содержит следующую инструкцию, и вместо этого выполняется случайная инструкция. (Всегда замечательно, когда это своего рода «goto». Бог знает, где это закончится и что он собирается делать после того, как это произойдет)

Там действительно нет разделения между кодом и данными. Все это одновременно инструкция (даже если это просто NOP), указатель и просто старое число. И код может измениться на ваших глазах.

Пожалуйста, помогите мне с сценарием Lisp, который я ломал голову. Скажем, у меня есть следующая программа:

(defun factorial (n)
   (if (<= n 1)
       1
       (* n (factorial (- n 1)))))
; -- Demonstrate the output of factorial --
; -- The part that does the Self modifying goes here –
; -- Demonstrate the changed output of factorial

Теперь я хочу добавить к этой программе некоторый код на Лиспе, который изменит * на a +, изменит <= на a> =, вставит (+ 1 2 3) где-то там, и, как правило, вызовет функцию вверх. И тогда я хочу, чтобы программа выполнила полный беспорядок, который в результате.

Ключевой момент: если я не допустил фатальную ошибку в примере кода, вам разрешено только изменить-– More code goes here –- часть. Что вы видите вышеэто код, Я не хочу, чтобы вы цитировали весь список и сохраняли его в переменной, чтобы им можно было манипулировать и выплевывать как отдельную функцию с тем же именем; Я не хочу стандартного переопределения факториала как чего-то совершенно другого. Я хочу, чтобы этот код, прямо там, который я мог видеть на своем экране, изменился перед моими глазами, точно так же, как машинный код.

Если это невыполнимый / необоснованный запрос, то он только укрепляет мою мысль о том, что гомоконичность - это не дискретное свойство, которое язык имеет или не имеет, это спектр, а Лисп не на переднем крае. (В качестве альтернативы Лисп настолько же гомоичен, насколько и они, и я ищу какой-то другой термин, чтобы описать самодиакцию машинного кода)

Ответы на вопрос(1)

Ваш ответ на вопрос