Simon pada dasarnya benar, dari sudut pandang ekstensional. Kita tahu betul apa semantik bahasa fungsional modern, dan mereka benar-benar merupakan variasi yang relatif kecil satu sama lain - masing-masing mewakili terjemahan yang sedikit berbeda ke dalam bahasa logam monadik. Bahkan bahasa seperti Skema (bahasa imperatif tingkat tinggi yang diketik secara dinamis dengan kontrol kelas satu) memiliki semantik yang cukup dekat dengan ML dan Haskell.
V
Tetapi untuk sampai ke kategori yang cocok untuk menafsirkan bahasa fungsional yang diketik modern, segalanya menjadi cukup menakutkan. Pada dasarnya, Anda akhirnya membangun kategori hubungan ekuivalensi parsial yang diperkaya ultrametrik atas domain ini. (Sebagai contoh, lihat Birkedal, Stovring, dan Thamsborg "Semantis Realisasi Polimorfisme Parametrik, Referensi Umum, dan Jenis Rekursif".) Orang yang lebih suka semantik operasional mengetahui hal ini sebagai hubungan logis langkah-diindeks. (Misalnya, lihat Ahmed, Dreyer dan Rossberg "Kemandirian Representasi Ketergantungan Negara"). Bagaimanapun, teknik yang digunakan relatif baru.
a -> b
⟨ Sebuah ⟩ → T⟨ B ⟩⟨ Sebuah ⟩ → ⟨ b ⟩T( A )⟨ Sebuah ⟩a
→
Sejauh teori persamaan berjalan, karena bahasa-bahasa ini dapat keduanya dijelaskan oleh terjemahan ke dalam himpunan bagian yang sedikit berbeda dari bahasa yang sama, sepenuhnya adil untuk menyebut mereka variasi sintaksis satu sama lain.
Perbedaan rasa antara ML dan Haskell sebenarnya muncul dari sifat intensional dari dua bahasa - yaitu, waktu eksekusi dan konsumsi memori. ML memiliki model kinerja komposisional (yaitu, biaya waktu / ruang dari suatu program dapat dihitung dari biaya waktu / ruang dari subtermsnya), seperti halnya bahasa panggilan-dengan-nama yang sebenarnya. Haskell yang sebenarnya diimplementasikan dengan panggilan-oleh-kebutuhan, semacam memoisasi, dan akibatnya kinerjanya tidak komposisional - berapa lama ekspresi yang terikat pada variabel diperlukan untuk mengevaluasi tergantung pada apakah ia telah digunakan sebelumnya atau tidak. Ini tidak dimodelkan dalam semantik yang saya singgung di atas.
Jika Anda ingin mengambil sifat intensional lebih serius, maka ML dan Haskell mulai menunjukkan perbedaan yang lebih serius. Mungkin masih mungkin untuk merancang bahasa logam yang umum untuk mereka, tetapi interpretasi jenis akan berbeda dalam cara yang jauh lebih sistematis, terkait dengan ide bukti-teori tentang fokus . Satu tempat yang baik untuk belajar tentang ini adalah tesis PhD Noam Zeilberger.