Gal Tamas Zoltan <gtz(a)ludens.elte.hu> writes:
Sziasztok!
Hogyan lehet SICStus 3.12.2 -ben hatástalanítani azt a feature-t, hogy a
10-nél hosszabb listákat a tizedik elem után nem írja ki? Ugye ezt
speciel nem tanultuk DP-bõl? :)
Hat, talan mutattam az oran... De itt is mutatom:
| ?- length(L, 30).
L = [_A,_B,_C,_D,_E,_F,_G,_H,_I,_J|...] ? <20
L = [_A,_B,_C,_D,_E,_F,_G,_H,_I,_J,_K,_L,_M,_N,_O,_P,_Q,_R,_S,_T|...] ? <0
L =
[_A,_B,_C,_D,_E,_F,_G,_H,_I,_J,_K,_L,_M,_N,_O,_P,_Q,_R,_S,_T,_U,_V,_W,_X,_Y,_Z,_A1,_B1,_C1,_D1]
? <
L = [_A,_B,_C,_D,_E,_F,_G,_H,_I,_J|...] ?
Tehat a <n paranccsal, n>0 esetben n melysegure allitjuk a kiiratast, n=0
eseten pedig vegtelenre. A < parancs pedig visszaallitja az alapertelmezett
melyseget.
A kezikonyv nehany vonatkozo sora:
`<'
In the top-level, a global "printdepth" is in effect for limiting
the subterm nesting level when printing bindings The limit is
initially 10.
This command, without arguments, resets the printdepth to 10.
With an argument of N, the printdepth is set to N, treating 0 as
infinity. This command works by changing the value of the
`toplevel_print_options' Prolog flag (*note State Info::).
(...)
`set_prolog_flag(+FLAGNAME,+NEWVALUE) "ISO"'
`prolog_flag(+FLAGNAME,?OLDVALUE,?NEWVALUE)'
OLDVALUE is the value of the Prolog flag FLAGNAME, and the new
value of FLAGNAME is set to NEWVALUE. The possible Prolog flag
names and values are:
(...)
`toplevel_print_options'
The value is a list of options for `write_term/3' (*note Term
I/O::), to be used when the top-level displays variable
bindings, answer constraints. It is also used when messages
are displayed. The initial value is
`[quoted(true),numbervars(true),portrayed(true),max_depth(10)]'.
És ha már írok, megkérdezem azt is, hogy van-e
lehetõség arra a
SICStusban, hogy ne kérdezze meg minden megoldás után, hogy kérek-e még
újabb megoldást, hanem egyszerûen listázza ki az összeset? Még nem
másztam bele eléggé a problémába, lehet, hogy egy kicsit okosabb
programmal nem merülne fel ilyesmi, mindenesetre hátha nem annyira alap
a kérdés, felteszem :)
Visszalepeses ciklussal, pl. igy:
| ?- megoldasa(bemenet, Megoldas), write(Megoldas), nl, fail ; true.
Remelem meg hasznotokra valnak a valaszok...
Peter