Điều tôi hiện đang kiểm tra X (Y) không phải là sự kiện được chấp nhận trong DB nhỏ của tôi. Vì X (Y) trả về false, nó sẽ cố gắng xác nhận nó. (Tôi nhận ra điều này trình bày các vấn đề khi X là một quy luật và không phải là một thực tế)Tôi có thể sử dụng các biến với khẳng định/1 không?
ifNotAdd(X,Y):-
not(call(X,Y)),
!,
assert(X(Y)).
Ví dụ, chúng ta hãy nói rằng thực tế này nằm ở cùng DB
mammal(dolphin).
tôi hỏi ifNotAdd (động vật có vú, con voi).
Tôi muốn nó thấy điều đó? động vật có vú (voi). là sai và sau đó khẳng định động vật có vú (voi).
Rõ ràng là "xác nhận (X (Y))". dòng là sai, nhưng tôi phải thay thế nó bằng cách nào? Tôi đang tìm kiếm tài liệu prolog và diễn đàn cho câu trả lời nhưng không có may mắn cho đến nay. Tôi cũng đang cố viết một cái gì đó sẽ tự làm điều này.
EDIT Tôi cần chỉnh sửa DB để có cơ sở dữ liệu động mà người dùng có thể tương tác. Tôi đang xây dựng một máy đối số và tôi cần cho phép người dùng thông báo cho hệ thống rằng họ "biết thực tế chắc chắn" để hệ thống có thể xử lý kiến thức bên ngoài miền của nó.
Trong bối cảnh của http://en.wikipedia.org/wiki/Reason_maintenance
Chúc mừng,
Ah hah, tôi thường sử dụng not() chỉ để dễ đọc khi hack nó cùng nhau lần đầu tiên mặc dù nó không được chấp nhận. Nên thay đổi điều đó cho bài đăng. Dù sao thì đó chính xác là những gì tôi đang tìm kiếm. Tôi đã không sử dụng prolog từ lớp tôi đã học nó trong một thời gian trước và đang học lại. Hoàn toàn quên '= ../2' để giải quyết điều đó. Tôi sẽ làm rõ chương trình ở trên. –
về chỉnh sửa của bạn: có vẻ như một lý do hợp pháp để thao tác với db:] – m09