Tôi đã rất ngạc nhiên trước sức mạnh của Prolog. Phải mất một thời gian để có được người đứng đầu xung quanh, nhưng đối với tôi nó dường như là ngôn ngữ khai báo tuyệt vời nhất ở đó. Đó là lý do gần đây, sau hai năm của một số lập trình chức năng với Scala, tôi quyết định xem xét lập trình logic một lần nữa, để "đào tạo não của tôi" hoặc tốt hơn cho việc sử dụng thực tế.Ngôn ngữ chức năng logic hữu dụng và hữu ích nhất để học
Kết hợp lập trình hàm và logic có vẻ hấp dẫn đối với tôi để tìm hiểu/củng cố các khái niệm về cả hai mô hình khai báo. Tôi cũng tìm thấy hệ thống kiểu mạnh mẽ rất hữu ích và hấp dẫn.
Scala thực sự tỏa sáng với interop. Chúng ta không phát minh lại bánh xe. Nó sẽ có thể gọi mã bằng ngôn ngữ chính khác, và thích hợp hơn để có thể gọi được. Nhưng nó không phải là Java. C hoặc Haskell cũng sẽ ổn.
Vì vậy, đó là ngôn ngữ FLP hữu ích và khai sáng nhất hiện nay và ý kiến và đề xuất của bạn về chúng là gì?
Dưới đây là những gì tôi tìm thấy cho đến nay:
Mercury: tuyên bố là nhanh chóng, mạnh mẽ gõ Prolog. Khai báo thuần túy, nhưng không có biến hợp lý! Không có lập trình ràng buộc? Có vẻ là FLP được sử dụng rộng rãi nhất. Interop ??
Curry: có vẻ đầy hứa hẹn và tiên tiến nhất, nhưng hiện tại có chút ít tài liệu. "Thử nghiệm" có nghĩa là chưa trưởng thành/chưa sẵn sàng để đi sâu vào? chỉ dựa trên Haskell hoặc thực sự tốt interop với Haskell?
Ciao: dường như cung cấp nhiều tính năng tôi muốn, nhưng Stack Overflow dường như không biết gì cả, mặc dù nó tồn tại từ năm 1984? Có gì sai với nó? Interop?
drools (thư viện java/DSL): xác nhận quyền sở hữu nó cho phép lai chuỗi chuyển tiếp và ngược. Trưởng thành. Interop trực tiếp với Java/Scala, nhưng dựa vào dữ liệu có thể thay đổi/cấu trúc bắt buộc? Nó tích hợp với các ngôn ngữ JVM chức năng như thế nào?
miniKiểm tra: triển khai tồn tại trên một số nền tảng. Làm thế nào là interop? Hiệu quả?
Lambda Prolog triển khai như:
Tốt nhưng lý thuyết đọc và thiên vị đối với cà ri và không giải quyết mối quan tâm thực hiện:
Tôi không phải là chuyên gia nhưng Curry có vẻ là người hứa hẹn nhất: nó trông giống như Haskell vì vậy nó đọc đẹp hơn Prolog & Mercury (nhưng YMMV); bạn có thể viết các hàm thuần túy "thông thường" trong nó giống như bạn làm trong Haskell; và bạn có thể gọi Haskell từ nó. - Tất cả trong tất cả, nó chỉ cảm thấy giống như một Haskell với logic mạnh mẽ và các tính năng lập trình hạn chế (chẳng hạn như các mẫu chức năng) được thêm vào, trái ngược với một mô hình hoàn toàn riêng biệt để thích nghi. –