JavaScript и Lisp имеют eval. Eval позволяет нам создавать код. Однако он страдает отсутствием наиболее важных частей, способности иметь код, который поддерживает код. Чтобы разрешить такие конструкции, вам нужно спуститься вниз «кроличья нора метапрограммирования». Внимание, эта дыра очень глубокая и очень запутанная. Кроме того, наш жалкий мозг по разработке программного обеспечения даже не имеет ментальной структуры, чтобы понять его возможности из-за слишком большого количества ООП.

Представьте, что у вас есть функция, похожая на evalза исключением того, что вместо простого объединения строк он семантически проверяет ваш код, позволяя eval2 функция изменения существующего кода. Что это может сделать для вас?

Я только что получил запрос в службу поддержки от одной из полудюжины групп разработчиков программного обеспечения, которым я помогаю, по всему миру. Этот исходил от нашего киевского партнера, которому нужно было изменить механизм авторизации своих конечных точек. Я сказал ему, что он должен заменить вызовы на auth.ticket.verifyно для него было слишком много файлов, поэтому он хотел изменить саму функцию — что, конечно, не подходит для кода, уже находящегося в производстве.

Я предложил ему использовать возможности метапрограммирования гиперлямбда создать фрагмент кода, который изменяет его существующий код. Частично для того, чтобы объяснить ему, как работает этот процесс, а частично потому, что я действительно влюблен в метапрограммирование и хочу поделиться своей любовью с миром, я решил создать видео на YouTube, где продемонстрирую концепцию.


Дайте мне знать, что вы думаете в комментариях. Однако, в основном, вышеизложенное позволяет мне сделать за 0,1 секунды то, на что человеческому существу теоретически понадобилось бы несколько дней. Это …

Круто метапрограммирование ^_^