Pull to refresh

Comments 9

Было бы здорово увидеть статью про написание компилятора на Хаскеле, желательно с парсером. Сам недавно начал изучать этот язык, чтобы заняться разработкой языка, но ничего особо полезного пока не видел, по крайней мере на Хабре.
Постараюсь заняться статьей на эту тему, как только будет возможность
Не вижу проблем, почему бы декоратор нельзя было бы задавать динамически.
Можно все функции сделать указателями, тогда бы задание декоратора делалось через присваивание нового значения этому указателю.
Можно использовать что-то вроде 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);
    };
}
Я правильно понимаю, что в такой реализации мы не можем менять количество аргументов и возвращаемое значение? Мы не можем сделать у декоратора 2 аргумента и убрать возвращаемое значение. А также, не очень понятно про декорирование обычных функций и методов. Их сокрытия же не произойдет
Изменение сигнатуры возможно только статически, как и изложено в статье выше.
«Обычные функции» таки да, нельзя будет в таком подходе декорировать. Но поскольку автор поста свой язык пишет, он вполне может все функции реализовать подобным образом.
Но таким образом же не будет производится сокрытия старых функций? Я имею в виду, предложенный вами вариант. Мне просто интересно как это сделать в моем любимом с++)
В C++ декораторы вообще нереализуемы, ну или реализуемы, но с сильными извращениями. Именно за этим автор поста создал свой язык.
Sign up to leave a comment.

Articles

Change theme settings