2009-12-16 16 views
29

Tôi là một nhà phát triển python lâu năm và gần đây đã được giới thiệu với Prolog. Tôi thích khái niệm sử dụng các quy tắc mối quan hệ cho một số loại nhiệm vụ nhất định và muốn thêm điều này vào tiết mục của tôi.Lập trình quan hệ/logic trong Python?

Có thư viện nào tốt để lập trình logic bằng Python không? Tôi đã làm một số tìm kiếm trên Google nhưng chỉ tìm thấy những điều sau đây:

jtauber's blog series on relational_python

Rất thích để so sánh với một số người khác ... cảm ơn!

-aj

+2

wow người đàn ông ... tôi được tôn trọng đối với bất kỳ ai thậm chí có thể đọc prolog! +1 – Perpetualcoder

+0

Tôi cũng thử: https://github.com/evertheylen/logicpy. Nó cố gắng tìm sự cân bằng giữa quá nhiều phép thuật Python và quá cồng kềnh để sử dụng. – evertheylen

Trả lời

11

Có lẽ bạn nên google "Lập trình logic bằng Python". Pyke trông đầy hứa hẹn:

Pyke giới thiệu một hình thức logic lập trình (lấy cảm hứng từ Prolog) để cộng đồng Python bằng cách cung cấp một động cơ dựa trên tri thức suy luận (hệ thống chuyên gia) viết bằng 100% Python.

Không giống như Prolog, Pyke tích hợp với Python cho phép bạn gọi Pyke từ Python và trộn lẫn các câu lệnh và biểu thức Python trong phạm vi quy tắc hệ thống chuyên gia của bạn.

+0

@Richie, trông giống như một gói hữu ích. Cảm ơn con trỏ! –

+0

từ trang Pyke: "Pyke giới thiệu một dạng Lập trình Logic (lấy cảm hứng từ Prolog) cho cộng đồng Python bằng cách cung cấp một công cụ suy luận dựa trên tri thức (hệ thống chuyên gia) được viết bằng 100% Python." – heltonbiker

2

Bạn cũng có thể nhìn vào Dee, có thêm các mối quan hệ để Python: http://www.quicksort.co.uk

+0

là Dee thực hiện D (như được mô tả trong sách của ngày?) –

+0

Đó là (không có đối tượng/loại thông số kỹ thuật) – greg

+0

quá xấu có vẻ như đã chết. trông đầy hứa hẹn –

2

Một thực hiện Prolog gần đây trong Python (hay đúng hơn là RPython) trong Pyrolog. Nó vẫn còn khá thử nghiệm.

+0

rất tuyệt, nhưng nó có hoạt động với python không?nó được viết trên đỉnh của pypy, cũng hỗ trợ (nổi tiếng) một triển khai python, nhưng nó không rõ ràng với tôi mà ngụ ý inter-op. Ngoài ra, trong khi tôi ở đây, http://blog.herraiz.org/archives/238 là một vài năm tuổi, nhưng được liệt kê các tùy chọn khác nhau (nó ngụ ý pyrolog inter-op, nhưng cũng có vẻ như nó chỉ đơn giản là giả định vì pypy, đó là những gì tôi đang đặt câu hỏi). –

+1

Proof-of-concept. Vì vậy, đi với soruces có thể cho phép điều đó. – false

9

Bạn có thể muốn sử dụng pyDatalog, thư viện lập trình logic mà tôi phát triển cho Python thực hiện Datalog. Nó cũng làm việc với SQLAlchemy để truy vấn các cơ sở dữ liệu quan hệ bằng các mệnh đề logic.

+2

Bạn cần tiết lộ rằng đó là ** dự án ** của bạn! – ThiefMaster

2

Bạn cũng nên kiểm tra PyLog:

http://cdsoft.fr/pylog/

Nó có một cú pháp và thực hiện rất sạch sẽ và đơn giản.

2

LogPy là triển khai miniKanren, một ngôn ngữ lập trình quan hệ, bằng Python. Nó theo truyền thống thứ nhất của core.logic, giải pháp lập trình logic ưu việt ở Clojure. LogPy được thiết kế cho khả năng tương tác với các codebases đã tồn tại từ trước.