Có thể hiển thị danh sách Prolog ở định dạng ./2, ví dụ:Hiển thị danh sách ở định dạng. Raw'/2 '
cho danh sách:
| ?- L=[a,b,c].
L = [a,b,c] ?
yes
Có một phương tiện để hiển thị:
L = .(a, .(b, .(c, []))).
Có thể hiển thị danh sách Prolog ở định dạng ./2, ví dụ:Hiển thị danh sách ở định dạng. Raw'/2 '
cho danh sách:
| ?- L=[a,b,c].
L = [a,b,c] ?
yes
Có một phương tiện để hiển thị:
L = .(a, .(b, .(c, []))).
Thông thường, write_canonical(List)
hoặc ?- write_term(List, [quoted(true), ignore_ops(true)])
, như đã chỉ ra trong các ý kiến. Kể từ SWI-Prolog quyết định do things differently, điều này là không đủ tốt:
?- write_canonical([a]).
[a]
true.
?- write_term([a], [quoted(true), ignore_ops(true)]).
[a]
true.
?- write_term([a], [dotlists(true)]).
.(a,[])
true.
Xem documentation on write_term/2
, chú ý đến các tùy chọn brace_terms(Bool)
và dotlists(Bool)
. Nhưng hãy cẩn thận: nếu bạn bắt đầu SWI-Prolog 7 bình thường, ./2
không phải là danh sách functor nữa!
?- L = .(a, []).
ERROR: Type error: `dict' expected, found `a' (an atom) % WHAT?
?- L = '[|]'(a, []).
L = [a].
Nếu bạn bắt đầu nó với swipl --traditional
, mọi thứ đang trở lại bình thường, loại:
$ swipl --traditional
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.3.4-32-g9311e51)
Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?- L = .(a, []).
L = [a].
Bạn vẫn không thể sử dụng write_canonical(List)
hoặc write_term(List, [quoted(true), ignore_ops(true)])
.
Đọc phần được liên kết của tài liệu SWI-Prolog để biết chi tiết và lý do. Là một lời khuyên, nếu bạn quyết định sử dụng SWI-Prolog dính vào SWI-Prolog 7 với các giá trị mặc định và chỉ sử dụng write_term(List, [dotlists(true)])
nếu bạn cần liên lạc với một triển khai Prolog khác. Ký hiệu danh sách thông thường, [a, b, ...]
phải đủ tốt trong hầu hết các trường hợp thông thường.
Kiểm tra 'write_canonical/1' trong bất kỳ hệ thống ISO nào phù hợp! 'write_canonical/1' rất hữu ích mỗi khi bạn nghi ngờ về hình thức chính xác của các thuật ngữ bạn đang tranh luận. Ví dụ với SICStus Prolog: '? - write_canonical ([a, b, c]).', Yieding: ''.' (A, '.' (B, '.' (C, [])))'. Vị từ rất có giá trị cũng cho trao đổi dữ liệu, nhằm tạo ra một biểu diễn thật sự kinh điển dễ phân tích cú pháp. – mat
L = [a, b, c], write_canonical (L). đã làm việc một điều trị! Tôi đang sử dụng sicstus vào lúc này, đôi khi swi ở nhà. Tôi tự hỏi nếu có bất kỳ phương tiện khác để đạt được cùng một kết thúc? – bph
'write_canonical/1' là cách tiêu chuẩn và tốt nhất để thực hiện. Tất nhiên bạn cũng có thể thực hiện điều này, sử dụng kiểm tra và phân tích cụm từ với 'arg/3',' = ../2', v.v. – mat