Как создать Clojure Lint? - PullRequest
       15

Как создать Clojure Lint?

13 голосов
/ 21 декабря 2009

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

Ответы [ 2 ]

4 голосов
/ 22 декабря 2009

Как насчет:

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

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

1 голос
/ 21 декабря 2009

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

...