サイモンは、拡張的な観点から基本的に正しいです。私たちは現代の関数型言語のセマンティクスが何であるかをよく知っており、それらは実際にはお互いの比較的小さなバリエーションです。Scheme(動的に型付けされた、一流の制御を備えた高次命令型言語)のような言語でさえ、MLとHaskellに非常に近いセマンティクスを持っています。
V
しかし、現代の型付けされた関数型言語の解釈に適したカテゴリーにたどり着くには、非常に怖いものになります。基本的に、このドメインで部分同値関係のウルトラメトリックに強化されたカテゴリを構築することになります。(例として、Birkedal、Stovring、およびThamsborgの「パラメトリック多相性、一般参照、および再帰型の実現可能性セマンティクス」を参照してください。)動作セマンティクスを好む人は、このようなものをステップインデックス付きの論理関係として知っています。(たとえば、Ahmed、Dreyer、およびRossbergの「State-Dependent Representation Independence」を参照してください。)どちらの方法でも、使用される手法は比較的新しいものです。
a -> b
⟨ A ⟩ → T⟨ B ⟩⟨ A ⟩ → ⟨ B ⟩T(A )⟨ A ⟩a
→
したがって、等式理論に関する限り、これらの言語はどちらも同じ言語のわずかに異なるサブセットへの翻訳によって記述することができるため、それらを互いに構文のバリエーションと呼ぶのはまったく公平です。
MLとHaskellの感覚の違いは、実際には2つの言語の内包的な特性、つまり実行時間とメモリ消費に起因しています。MLには、本当の名前による呼び出し言語と同様に、合成パフォーマンスモデルがあります(つまり、プログラムの時間/空間コストは、そのサブタームの時間/空間コストから計算できます)。実際のHaskellは、一種のメモ化であるcall-by-needで実装されているため、そのパフォーマンスは構成的ではありません。変数にバインドされた式が評価にかかる時間は、それが以前に使用されたかどうかによって異なります。これは、先ほど触れたセマンティクスではモデル化されていません。
内包的性質をもっと真剣に受けたいのであれば、MLとHaskellはもっと深刻な違いを見せ始めます。それらのために共通のメタ言語を考案することはおそらく可能ですが、型の解釈は、焦点を合わせるという証明理論的な考え方に関連して、はるかに体系的な方法で異なります。これについて学ぶのに適した場所の1つは、Noam Zeilbergerの博士論文です。