Ngôn ngữ nào không chỉ có chức năng có dữ liệu đại số loại (hoặc một cái gì đó tương tự) và khớp mẫu? Tôi cũng quan tâm đến các ngôn ngữ đa mô hình - tôi biết rằng Ocaml và F # là phương ngữ ML với OO được thêm vào, vì vậy chúng kế thừa các kiểu dữ liệu đại số từ ML.Loại dữ liệu đại số ngoài các ngôn ngữ chức năng?
Chúng có thể được mô phỏng bằng cách sử dụng enum
s và union
s (như trong C, C++, ... nhiều hơn?), Nhưng điều này sẽ trở nên cồng kềnh và xấu xí, và trình biên dịch không thể cảnh báo bạn nếu bạn quên một trường hợp phù hợp với mô hình của bạn hoặc (nhiều khả năng hơn, và nguy hiểm hơn nhiều) khi truy cập công đoàn "theo cách sai", nghĩa là bạn yêu cầu một trường có giá trị Left
khi giá trị thực sự là giá trị Right
(những gì bạn nhận được sau đó là sự giải thích vô nghĩa của các bit xảy ra ở đó).
Tôi đã nghe nói rằng Pascal has something like tagged unions và Cyclone language cũng hỗ trợ công đoàn được gắn thẻ. Wikipedia cũng đề cập đến Ada và Algol. Bất kỳ ngôn ngữ nào khác?
(Trong trường hợp bạn chưa bao giờ nghe nói về các loại dữ liệu đại số, bạn có thể đọc an Answer to "What is 'Pattern Matching' in functional languages?" để có phần giới thiệu tuyệt vời).
Cảm ơn - Tôi không biết ngôn ngữ logic, vì vậy tôi có thể không tự mình học được điều này. – delnan
Cả hai đều là ngôn ngữ nghiên cứu. Cộng đồng LP đã vay mượn rất nhiều từ những người anh em họ FP của họ. –