Tôi đã nghe nói rằng trong Prolog, chương trình và dữ liệu cũng giống nhau. Điều đó nghĩa là gì?Chương trình và dữ liệu giống nhau trong Prolog?
Trả lời
Điều đó có nghĩa là chương trình của bạn được triển khai dưới dạng một loạt quy tắc và dữ liệu cũng được triển khai dưới dạng các quy tắc - không có sự phân biệt giữa quy tắc gây ra một số hoạt động (chương trình) và quy tắc trả lại giá trị dữ liệu.
Điều này đề cập đến các thuật ngữ là dữ liệu, nhưng chương trình cũng được mô tả theo thuật ngữ.
?- A=write(B), C=(B is 1+2), Prog = (C, A).
A = write(B),
C = (B is 1+2),
Prog = (B is 1+2, write(B)).
?- $Prog.
3
true.
Nguồn Prolog chỉ là danh sách các quy tắc. Một số quy tắc chỉ là "dữ liệu" - chúng là true
mà không cần đánh giá thêm.
person(james).
father(james, thomas).
"James là một người". "James là cha đẻ của thomas."
Các quy tắc này là dữ liệu.
Tôi có thể chạy truy vấn đối với dữ liệu này. Tôi có thể đặt câu hỏi:
?- person(X).
Câu trả lời sẽ là:
X = james.
Hoặc:
?- father(X, thomas).
Câu trả lời sẽ giống nhau.
Các quy tắc khác cần đánh giá thêm.
grandfather(X, Z) :- father(X, Y), father(Y, Z).
Đây là một "chương trình" đơn giản.
Chương trình ông nội của chúng tôi sẽ đánh giá là đúng nếu chúng tôi có đúng dữ liệu. Ví dụ:
father(james, william).
father(james, tyler).
father(james, thomas).
father(jeff, james).
Nếu tôi thực hiện các chương trình sau đây:
?- grandfather(jeff, X).
tôi nhận được:
X = william
tôi có thể yêu cầu prolog để tiếp tục và tôi sẽ nhận được X = tyler
và X = thomas
.
Cú pháp trở nên phức tạp hơn, nhưng các khái niệm cơ bản giống nhau. Dữ liệu và chương trình chỉ là một tập hợp các sự kiện. Nghệ thuật của prolog là làm cho các quy tắc đúng dẫn đến việc tính toán kết quả.
Chỉ cần đặt trên mũ của người đi bộ - tên cho điều này là: đồng âm. Có rất nhiều điều về: Mã máy, cũng là, đồng âm.
- 1. chương trình giống như gnuplot cho dữ liệu dòng thời gian
- 2. Nhúng dữ liệu vào chương trình C++
- 3. Dữ liệu cấu hình chương trình trong Unix/Linux
- 4. Sự khác nhau giữa chương trình thủ tục và chương trình hướng đối tượng là gì?
- 5. Sự khác nhau giữa == và = trong Prolog là gì?
- 6. kiểm tra xem các chương trình 2 R có giống hệt nhau
- 7. jQuery $ (hàm() {}) và $ (tài liệu). Đã giống nhau chưa?
- 8. PROLOG tất cả khác nhau
- 9. kết hợp hai cấu trúc bảng giống nhau với các dữ liệu khác nhau
- 10. Kiểm tra cột giống hệt nhau trong một khung dữ liệu trong R
- 11. thêm chú thích dữ liệu theo chương trình
- 12. Định nghĩa kiểu Prolog trong swi-prolog
- 13. Có phải CAST và CONVERT giống nhau trong SQL không?
- 14. Các số ngẫu nhiên giống nhau mỗi khi tôi chạy chương trình
- 15. Có chương trình nào giống LINQPad cho Java không?
- 16. Prolog - ASSERT và RETRACT
- 17. mySql: đếm số hàng có dữ liệu giống nhau trong một cột
- 18. Cơ sở dữ liệu giống hệt trong Flask-SQLAlchemy
- 19. Giải quyết hệ phương trình trong Prolog
- 20. Sự khác nhau giữa cơ sở dữ liệu và kho dữ liệu là gì?
- 21. Cách lấy dữ liệu từ dòng lệnh từ bên trong chương trình Python?
- 22. Bảng băm trong prolog
- 23. D3, phụ đề lồng nhau và luồng dữ liệu
- 24. Xử lý trang giống nhau
- 25. "SFTP" và "Ftp over SSL" có giống nhau không?
- 26. Dữ liệu hạt giống trong các thử nghiệm dưa chuột
- 27. Prolog: khoản không cùng nhau trong nguồn tập tin
- 28. Java regex và sed không giống nhau ...?
- 29. ClearTimeout và clearInterval có giống nhau không?
- 30. Có chương trình nào có thể vẽ cây tìm kiếm các truy vấn Prolog không?
Cảm ơn. Câu trả lời tuyệt vời. –