2013-07-25 15 views
11

MLには多くの方言があり、SMLとOCamlが最も人気があります。 SMLとOCamlには多くの違いがありますが、どちらもMLの方言と考えられています。 したがって、なぜSMLとOCamlはMLの方言と見なされますか? MLの定義は何ですか?

  1. なぜSMLとOCamlはMLの方言と見なされるのですか?
  2. どのように言語をMLの方言と見なすことができますか?
  3. MLがSML/OCamlでない場合、MLの定義は何ですか?

MLはSMLとOCamlの交差点ですが、詳細な定義がありません。

+12

http://caml.inria.fr/about/history.en.html OCamlの世界からの展望 – camlspotter

+2

私は、型システムがもっともしていること、なぜ彼らが方言であると考えられるかを推測します。明らかに構文のいくつか。 –

答えて

7

camlspotterのリンクには、ML履歴の素晴らしい概要があり、Luca Cardelliの実装では「Cardelli's ML」と呼ばれています。私はそのために周りを突き刺し、この論文が見つかりました:ML under Unix。ルカ・カーデリは「ML」の実装を説明し、私はこれは抽象的で機能のリストである、それは1983年時代遅れだとして、これは標準的なMLに先行ますかなり確信している:

  • インタラクティブ
  • は強く
  • を入力しました
  • 多相型システム
  • 抽象データ型
  • 例外
  • モジュール

これはかなり良いリストですが、いくつかの部分は不明瞭です。私は、このリストは、MLが "MLと見なされる"ためにどのような機能を持つべきかという非公式の定義として役立つと思うが、注目すべきことがいくつかある。

システムが「インタラクティブ」であるという要件は、おそらく本書で説明されている実装に固有のややこしい実装の詳細です。標準MLコンパイラMLtonは対話的なREPLを持っていません(それはプログラム全体を最適化するコンパイラです)。しかし、MLtonの実装言語がMLではないことを真剣に示唆している人はいません。

さらに、「強く型付けされた」それはより多くのコンテキストにその段落の残りの部分を読んで価値があるので、かなりあいまいです:

すべてのML式は、静的 を決定されたタイプを持っています。式の型は通常、型定義を必要とせずに、システムによって自動的に推測されます。 ML型システムは、 が入力可能な式であれば、実行時に型エラーを生成しないことを保証します。コンパイル時の静的な型チェックのトラップは、プログラムのバグの大部分を占めます。

このリストには、UR-ML LCFで使用されるが、パターンマッチングを持っていた、そうでない場合ならば、私は知りませんが、しかし紙は、カバーパターンマッチングを行い、すべてでパターンマッチングを言及していませんどのようにしてデータタイプを操作するのか。私は、2013年にこれらの機能を備えた言語がパターンマッチングに欠けていると主張しますが、MLとして販売するのは難しいでしょう。

あなたがちょっと見ていると、Haskellはほとんどこのリストに従っていることに注意してください。しかし、実際には、私はほとんどの人がHaskellはMLは、歴史的不純厳しいしてきたがHaskellは純粋怠惰である主な理由は、「MLない」MLに触発され、しかし考えると思うことを十分に発散します。さらに、MLモジュールシステムは、SMLとOCamlの両方で、Haskellのものとかなり異なっており、どちらのMLもタイプメーターを持っていません。

これはすべての質問に対する網羅的な回答ではありませんが、それでもなお役立つと思います。

+0

ML Under Unixへのあなたのコメントとリンクに感謝します。私は参考文献を読んで、ウェブを検索し、1978年に出版された論文を発見した[LCFのインタラクティブな証拠のためのメタ言語](http://www-public.int-evry.fr/~gibson/Teaching/CSC4504/ReadingMaterial/GordonMMNW78) .pdf) '。そして、この小説家は、「MLの完全な記述とPPλの使用は、技術的な報告書として存在します:エジンバラLCF、1977」と書いています。私はこれがMLの起源論文かもしれないと思います。しかし、私はそれのnオンライン版を見つけることに失敗しました。 – InsaneRabbit

+0

そして、MLの方言について厳密な定義はないと思います。ある言語がSMLの十分な特徴を持っていれば、MLの方言として販売することができます。 「クラウドコンピューティング」のように、厳密な定義はありません(おそらく存在しますが、誰が気にしますか)。今日は誰の製品も曇っています。 – InsaneRabbit

+0

面白いことに、この他の論文を見つけると、これが上記の技術レポートであるかどうか疑問に思う。http://www.amazon.com/Edinburgh-LCF-Mechanized-Computation-Computer/dp/3540097244目次にMLを記述するいくつかのセクションであるように見えます。おそらく – spacemanaki

関連する問題