Комментарии 9
Было бы здорово увидеть статью про написание компилятора на Хаскеле, желательно с парсером. Сам недавно начал изучать этот язык, чтобы заняться разработкой языка, но ничего особо полезного пока не видел, по крайней мере на Хабре.
+1
Не вижу проблем, почему бы декоратор нельзя было бы задавать динамически.
Можно все функции сделать указателями, тогда бы задание декоратора делалось через присваивание нового значения этому указателю.
Можно все функции сделать указателями, тогда бы задание декоратора делалось через присваивание нового значения этому указателю.
0
Можно использовать что-то вроде std::function:
#include <functional>
std::function<int(int)> some_func=
[](int x) -> int
{
return x * 2;
};
void apply_decorator()
{
some_func=
[prev_func= some_func](int x) -> int
{
return prev_func(x + 1);
};
}
+1
Я правильно понимаю, что в такой реализации мы не можем менять количество аргументов и возвращаемое значение? Мы не можем сделать у декоратора 2 аргумента и убрать возвращаемое значение. А также, не очень понятно про декорирование обычных функций и методов. Их сокрытия же не произойдет
0
Изменение сигнатуры возможно только статически, как и изложено в статье выше.
«Обычные функции» таки да, нельзя будет в таком подходе декорировать. Но поскольку автор поста свой язык пишет, он вполне может все функции реализовать подобным образом.
«Обычные функции» таки да, нельзя будет в таком подходе декорировать. Но поскольку автор поста свой язык пишет, он вполне может все функции реализовать подобным образом.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как скомпилировать декоратор — C++, Python и собственная реализация. Часть 2