2011-12-14 9 views
6

私はErlangとゆっくりと恋に落ちています。大きな問題が1つしかありません。erlangでの静的型チェック

私はStandart MLやocamlのような強力な静的型検査を使用しています。

は、erlangのstatic typecheckingのソートを紹介するうまくクリーンな方法です。私は-type-spec注釈を見ています。

誰も素晴らしい解決策を持っていますか?

答えて

11

私はそこに行ってきました!私はOCamlとErlangが大好きで、定期的に使用しています。

私がErlangを使い始めた頃、私はOCamlで何年もの経験がありました。コンパイラに静的型検査器がないという事実に合わせるのに数週間かかりました。しかしその後、痛みは完全に消えてしまった。

ある程度、型チェッカーを使わずに行くことは価値のある運動です。私にとって、それは経験を啓発し、本当に私をより良いプログラマーにしました。

しかし、Erlang用の外部スタティック型チェッカーは、Dializerと呼ばれています。私はそれが非常に便利だと思う。問題はそれを別に呼び出す必要があり、遅いです。コードをコミットする前や、自動化されたビルドのようにしばらくの間実行すると効果的です。私は各コンパイル後にそれを実行しようとしたことはありませんでした。完了するまで待つのはあまり気を散らすでしょう。

私は主に文書化のため -spec-typeを使用
+0

型チェッカーせずに行くこと啓発的だったなぜあなたは説明できますか?あなたは、タイプチェッカーがあなたの経験に役に立たないと思うようになりましたか? – mljrg

+0

タイプチェッカーが非常に便利なアプリケーションがたくさんあります。そして、彼らはOCamlのような言語で魔法のように動作します。私にとって、常に彼らに頼っている副作用は、私の脳の一部がプログラムの重要な高水準の側面に注意を払っていないということでした。それは盲点のようになり、私が書いているプログラムの完全な認識と焦点を維持することを好む。つまり、Erlangにはより良いオプションの型チェッカーがあったらいいと思います。リファクタリングとコラボレーションのために型チェッカを凌ぐことはできません。常にすべてのコードで同じ焦点を維持することは不可能です。 – alavrik

3

チェック何らかのプログラミングエラー、不必要な試験等にデッドまたは到達不能になった

ダイアライザーのような明確型エラーソフトウェアの不一致を識別する静的解析ツールであるDialyzerツール、コード1つのErlangモジュールまたはアプリケーション全体(集合)。

2

:あなたは-specとスペックを書き、そこ、年月を経てドキュメント

+0

thats私がやったことも終わったもの:) –

3

を生成する(後EDOC形式でいくつかの追加情報を追加)、その後タイパーでそれをチェックして、 Erlangの上に 上にタイプシステムを構築しようとする試みがいくつかありました。グラスゴー・ハスケル コンパイラのリード開発者の1人であるSimon Marlowと、Haskellの設計に携わり、 がモナドの背後にある理論に寄与しているPhilip Wadler(1997年には )タイプ システム)。ジョー・アームストロングは後でこの論文にコメントしました:

1日Philは私に電話し、a)Erlangは型システムが必要でした。b)型システムの小さなプロトタイプを作成しました。c)彼は に1年間休暇とは、「我々が興味を持っていた?」 のErlangのための型システムを書くつもりとして回答 - 「はい」

フィルWadlerとサイモン・マーロウは、一年以上のための型システムに取り組み、その結果が は、に掲載された

[20]。このプロジェクトの結果は、いくぶん が失望していた。まず、言語のサブセットは 型チェック可能であり、主な欠点はプロセスタイプの欠如であり、 型のプロセス間メッセージのチェックです。

http://learnyousomeerlang.com/types-or-lack-thereof

関連する問題