Bir Prolog listesini./2 biçiminde, ör. Açıklamalarda belirttiği şekilde'raw' .2/2 biçiminde bir liste görüntüleme
L = .(a, .(b, .(c, []))).
Bir Prolog listesini./2 biçiminde, ör. Açıklamalarda belirttiği şekilde'raw' .2/2 biçiminde bir liste görüntüleme
L = .(a, .(b, .(c, []))).
Normalde write_canonical(List)
veya ?- write_term(List, [quoted(true), ignore_ops(true)])
: listesi için
| ?- L=[a,b,c].
L = [a,b,c] ?
yes
ekrana bir araç var mı. SWI-Prolog do things differently karar beri bu yeterince iyi değil:
?- write_canonical([a]).
[a]
true.
?- write_term([a], [quoted(true), ignore_ops(true)]).
[a]
true.
?- write_term([a], [dotlists(true)]).
.(a,[])
true.
, documentation on write_term/2
Bkz seçenekleri brace_terms(Bool)
ve dotlists(Bool)
dikkat edin. Ama dikkat: SWI-Prolog 7'yi normal olarak başlatırsanız, ./2
artık liste functor değildir! Eğer swipl --traditional
ile başlatırsanız
?- L = .(a, []).
ERROR: Type error: `dict' expected, found `a' (an atom) % WHAT?
?- L = '[|]'(a, []).
L = [a].
, işler bir şekilde, normale döndü:
$ 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].
Hala write_canonical(List)
veya write_term(List, [quoted(true), ignore_ops(true)])
kullanamaz.
Ayrıntılar ve mantık için SWI-Prolog belgelerinin bağlantılı bölümünü okuyun. Bir öneri olarak, SWI-Prolog stick'i varsayılan olarak SWI-Prolog 7'ye kullanmaya karar verirseniz ve başka bir Prolog uygulamasıyla iletişim kurmanız gerekiyorsa yalnızca write_term(List, [dotlists(true)])
'u kullanın. Her zamanki liste notasyonu, [a, b, ...]
, çoğu geleneksel durumda yeterince iyi olmalıdır.
Herhangi bir ISO uyumlu sistemde 'write_canonical/1' kontrol edin! 'write_canonical/1', mantığınız olan terimlerin kesin şekli hakkında şüpheleriniz olduğunda her zaman çok kullanışlıdır. Örnek: SICStus Prolog: '? - write_canonical ([a, b, c])., Yieding:' '.' (A, '.' (B, '.' (C, [])) '. Ayrıştırılması kolay gerçek bir kanonik temsili vermeyi amaçlayan veri alışverişi için de çok değerli bir yüklem. – mat
L = [a, b, c], yazma_kanonik (L). bir tedavi çalıştı! Şu anda sicstus kullanıyorum, bazen evde swi. Aynı sonuca ulaşmak için başka yollar var mı acaba? – bph
'write_canonical/1', bunu yapmanın standart ve en iyi yoludur. Tabii ki bunu da kendiniz uygulayabilirsiniz, "arg/3", '= ../2' vb. Ile termik muayene ve ayrıştırma. – mat