Статическая проверка типов в erlang
Я медленно влюбляюсь в Эрланга, и у меня только одна большая, большая проблема.
Я большой поклонник языков, таких как Standart ML и ocaml с их сильной статической проверкой типов.
есть ли хороший и чистый способ ввести somesort статической проверки типов в erlang. Я смотрю на -type
и -spec
Примечание.
у кого-нибудь есть хорошее решение?
4 ответов
Я был там! Я люблю и OCaml и Erlang и использую их регулярно.
к тому времени, когда я начал использовать Erlang, у меня был многолетний опыт работы с OCaml. Мне потребовалось несколько недель, чтобы приспособиться к тому, что в компиляторе нет статического typechecker. Но после этого боль полностью прошла.
в определенной степени, идти без typechecker является полезным упражнением. Для меня это был поучительный опыт, и действительно сделал меня лучше программист.
существует, однако, внешний статический typechecker для Erlang под названием Dializer. Я нахожу это очень полезным. Проблема с ним заключается в том, что вам нужно вызвать его отдельно, и это медленно. Запуск его время от времени (например, перед фиксацией кода или как части автоматизированных сборок) отлично работает. Я никогда не пробовал запускать его после каждой компиляции, так как это было бы слишком отвлекающим, чтобы ждать, пока он завершится.
Регистрация Диализатора инструмент
Диализатор-это инструмент статического анализа, который идентифицирует несоответствия программного обеспечения, такие как определенные ошибки типа, код, который стал мертвым или недостижимым из-за некоторой ошибки программирования, ненужных тестов и т. д. в одиночных модулях Erlang или всех (наборах) применениях.
на протяжении многих лет, были некоторые попытки построения систем типа верхней части Эрланг. Одна такая попытка была предпринята еще в 1997 году Саймон Марлоу, один из ведущих разработчиков Glasgow Haskell Компилятор, и Филипп Wadler, который работал на конструкции Haskell и имеет внес вклад в теорию монад (читайте статью об этом типе система.) Джо Армстронг позже прокомментировал статью:
Фил Уодлер и Саймон Марлоу работали над системой типов более года, и результаты были опубликовано в [20]. Результаты проекта были несколько разочаровывающий. Для начала, только подмножество языка было тип-проверяемый, основным упущением является отсутствие типов процессов и типа проверки межпроцессных сообщений.
Я в основном использовать -spec
и -type
для целей документации: вы пишете спецификацию с -spec
, затем проверьте его с помощью TypEr, а затем (после добавления дополнительной информации в формате edoc) создайте документацию