История изменений
Исправление no-such-file, (текущая версия) :
А если функция определяется как (setf (symbol-function foo) (compose f g k)) ? Или считаем функциональное программирование табу?
По-хорошему, нужно заменять «функцию» на новый функциональный объект, который содержит собственно функцию и список адвайсов. Соответственно и funcall при применении к такому объекту должен будет учитывать список приаттаченых к функции адвайсов.
На самом деле вообще эта фича (advice) не кажется такой уж суперполезной. В тех случаях когда действительно необходимо, можно заранее предусмотреть возможность навешивания middleware в виде списка, т.е соорудить специальный объект и методы к нему. Прикручивать же такую возможность ко всем функциям вообще - ИМХО это оверкилл.
Исправление no-such-file, :
А если функция определяется как (setf (symbol-function foo) (compose f g k)) ? Или считаем функциональное программирование табу?
По-хорошему, нужно заменять «функцию» на новый функциональный объект, который содержит собственно функцию и список алвайсов. Соответственно и funcall при применении к такому объекту должен будет учитывать список приаттаченых к функции адвайсов.
На самом деле вообще эта фича (advice) не кажется такой уж суперполезной. В тех случаях когда действительно необходимо, можно заранее предусмотреть возможность навешивания middleware в виде списка, т.е соорудить специальный объект и методы к нему. Прикручивать же такую возможность ко всем функциям вообще - ИМХО это оверкилл.
Исходная версия no-such-file, :
А если функция определяется как (setf (symbol-function foo) (compose f g k)) ? Или считаем функциональное программирование табу?
По-хорошему, нужно заменять «функцию» на новый функциональный объект, который содержит собственно функцию и список авайсов. Соответственно и funcall при применении к такому объекту должен будет учитывать список приаттаченых к функции адвайсов.
На самом деле вообще эта фича (advice) не кажется такой уж суперполезной. В тех случаях когда действительно необходимо, можно заранее предусмотреть возможность навешивания middleware в виде списка, т.е соорудить специальный объект и методы к нему. Прикручивать же такую возможность ко всем функциям вообще - ИМХО это оверкилл.