2012-04-08 20 views
5

Tôi có một tệp cơ sở dữ liệu Prolog (test_inserts.p) mà tôi đã sử dụng để chèn tất cả dữ liệu của mình.Vấn đề PROLOG đơn giản: Làm thế nào để bạn kiểm tra nhiều truy vấn đối với cơ sở dữ liệu Prolog của bạn?

Tôi cũng có tệp truy vấn Prolog (test_queries.pl) có tất cả truy vấn Prolog mà tôi đã viết để nhận thông tin cụ thể từ cơ sở dữ liệu của mình.

Tôi đã tự hỏi làm thế nào để thực sự sử dụng các truy vấn test_queries.pl đối với tệp cơ sở dữ liệu test_inserts.p của tôi khi sử dụng gprolog? Tôi đã hy vọng sẽ có một cách để tải cả hai cùng một lúc, và bằng cách nào đó có thể chỉ huy truy vấn để chạy, thay vì phải gõ lại mỗi truy vấn mà tôi muốn chạy ....

Trả lời

5

Tôi đã sử dụng initialization/1 chỉ thị ISO trong test_queries.pl để có được hiệu ứng bạn thấy ở dưới cùng.

test_queries.pl

test :- 
     findall(_, (a(X,Y), format('~w ~w~n', [X,Y])), _). 

:- initialization([test_inserts]). 
:- initialization(test). 

test_inserts.pl

a(X,Y) :- append(X,Y,[1,2,3]). 

sau đó gọi gprolog với --consult-file

gprolog --consult-file test_queries.pl 
GNU Prolog 1.4.0 
By Daniel Diaz 
Copyright (C) 1999-2011 Daniel Diaz 
compiling /home/carlo/test_queries.pl for byte code... 
/home/carlo/test_queries.pl compiled, 5 lines read - 659 bytes written, 28 ms 
compiling /home/carlo/test_inserts.pl for byte code... 
/home/carlo/test_inserts.pl compiled, 2 lines read - 379 bytes written, 30 ms 
[] [1,2,3] 
[1] [2,3] 
[1,2] [3] 
[1,2,3] [] 
| ?- 
+0

+1. BTW, có [GNU Prolog 1.4.1] (http://gprolog.univ-paris1.fr/unstable/?C=M;O=D) – false

+0

@false: Tôi vừa mới cài đặt từ nguồn sáng nay. Tốc độ di chuyển nhanh ... – CapelliC

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