2009-12-21 3 views
13

Один пример общей ошибки программирования Clojure ожидает, что ленивое выражение будет оценено для побочных эффектов. На первый взгляд, было бы полезно проверить неиспользованные ленивые выражения. Какой был бы лучший подход к идентификации этого и другого common mistakes? Должен ли основной компилятор проверять эти ситуации или должен ли он быть областью программы lint для обнаружения? Что было бы хорошим способом начать реализацию?Как создать Clojure Lint?

ответ

4

Как насчет:

  • Мультиметоды с не :default методом
  • недостающей документации строк
  • В тех случаях, когда аргумент функции всегда тот же самый тип, предлагая тип подсказки на аргументы
  • Указание нескольких копий идентичных анонимных функций
  • Указывая на рекурсию хвоста и предлагая реструктуризацию
  • Использование макроса, когда функция будет достаточным
  • Неиспользованные аргументы, особенно & rest аргументы типа
  • Если функция будет использовать BigNums вместо всего Интс или с плавающей точкой

Не уверен, как эти чеки были бы быть реализованы, но они наверняка спасут меня от меня много времени.

1

Несколько идей только для того, чтобы все началось; он может обнаружить ленивый код, который никогда не может быть реализован, или указать области, где будет использоваться рефлексия. Хотя в общем, clojure немного молод, как язык, чтобы выразить общий набор доказуемых ошибок?