Liên kết từ trình thu thập thông tin có tổng quan tốt đẹp về lịch sử ML và đề cập đến việc triển khai bởi Luca Cardelli được gọi là "Cardelli's ML". Tôi chọc quanh đó và tìm thấy bài báo này: ML under Unix. Luca Cardelli mô tả một thực hiện "ML", và tôi chắc rằng điều này sẽ có trước Standard ML vì nó ra tháng năm 1983. Đây là danh sách các tính năng một cách trừu tượng:
- tương tác
- mạnh mẽ gõ
- hệ thống kiểu đa hình
- kiểu dữ liệu trừu tượng
- ngoại lệ
- module
Đây là một danh sách khá tốt, mặc dù một số phần có vẻ không rõ ràng. Tôi nghĩ rằng danh sách này có thể phục vụ như là một định nghĩa không chính thức về những gì các tính năng một ngôn ngữ nên có để được "coi là một ML", tuy nhiên có một vài điều đáng chú ý.
Yêu cầu hệ thống là "tương tác" là một chi tiết triển khai phần nào khó tính, có lẽ cụ thể cho việc triển khai được mô tả trong bài báo này. Trình biên dịch ML tiêu chuẩn MLton không có một REPL tương tác (vì nó là một trình biên dịch tối ưu hóa toàn bộ chương trình), tuy nhiên tôi nghi ngờ bất cứ ai nghiêm túc đề xuất ngôn ngữ MLton thực hiện không phải là ML.
Bên cạnh đó, "mạnh mẽ gõ" là khá mơ hồ, vì vậy nó có giá trị đọc phần còn lại của đoạn đó cho bối cảnh nhiều hơn:
Mỗi ML biểu hiện có một loại, được xác định tĩnh. Loại biểu thức thường được hệ thống tự động suy ra, mà không cần loại xác định. Hệ thống loại ML đảm bảo rằng bất kỳ biểu thức nào mà có thể được nhập sẽ không tạo ra lỗi loại tại thời gian chạy. Bẫy đánh máy tĩnh tại thời gian biên dịch một tỷ lệ lớn các lỗi trong chương trình.
Danh sách này cũng không đề cập đến mô hình phù hợp chút nào, tuy nhiên giấy làm bìa mô hình phù hợp, mặc dù tôi không biết nếu ur-ML sử dụng trong LCF có phù hợp với mô hình, và nếu không, làm thế nào người ta có thể thao tác các kiểu dữ liệu mà không có nó. Tôi cho rằng vào năm 2013, một ngôn ngữ với các tính năng này, nhưng thiếu sự phù hợp với mẫu, sẽ là một khó khăn khi bán dưới dạng ML.
Lưu ý rằng Haskell chủ yếu tuân theo danh sách này, nếu bạn nheo mắt một chút.Nhưng trong thực tế nó phân kỳ đủ mà tôi nghĩ rằng hầu hết mọi người xem xét Haskell lấy cảm hứng từ ML, nhưng "không phải là một ML", chủ yếu là vì Haskell là tinh khiết và lười biếng trong khi ML trong lịch sử được bất tịnh và nghiêm ngặt. Hơn nữa, hệ thống mô-đun ML, trong cả SML và OCaml, khác với Haskell một chút, và không phải của các ML có typeclasses.
Đây không phải là câu trả lời đầy đủ cho tất cả các câu hỏi của bạn, nhưng tôi hy vọng nó sẽ giúp ích cho bạn.
http://caml.inria.fr/about/history.en.html Quan điểm từ OCaml thế giới – camlspotter
Tôi đoán rằng hệ thống kiểu có nhiều thứ nhất để làm, tại sao chúng được coi là một phương ngữ. Rõ ràng cũng là một số cú pháp. –