2010-03-02 27 views

Trả lời

5

Đ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.

4

Đ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ữ.

1
?- 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. 
6

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 = tylerX = 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ả.

+0

Cảm ơn. Câu trả lời tuyệt vời. –

4

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.

Các vấn đề liên quan