Lisp / Clojure: Хорошая ли идея - писать макросы, генерирующие функции?

В этом вопросе предлагается создать макрос Clojure для генерации нескольких функций. Мы придумали, как это сделать, но зациклились на вопросе «Это хорошая идея?».

Моя первоначальная реакция не совсем по двум причинам

  1. Затем у вас есть функции, которые не определены в вашем коде, и это может немного усложнить понимание вашего кода! (Представьте, что у кого-то проблема с одной из ваших функций, и он смотрит на исходный код только для того, чтобы нигде его не найти).
  2. Лучше исключить общность кода в функции или макросе. Плохой подход к этому - позволить вашему компьютеру писать набор очень похожих функций.

Что вы думаете? Когда имеет смысл генерировать функции в Лиспе? Должен ли он быть «на лету» или вы предпочитаете хранить его где-нибудь в файле?

6
задан Community 23 May 2017 в 12:19
поделиться