io - read a file into a list [prolog] -
i have log entries include 4 different terms.
log(name1,surname1,street1,belgium). log(name2,surname2,street2,germany). log(name3,surname3,street3,france). log(name4,surname4,street4,france).
i saved loginfo.pl. manage read these input file (loginfo.pl) not collect in "list".after need filter using condition " country begin letter 'f'.
so @ end want
[log(name3,surname3,street3,france),log(name4,surname4,street4,france)]
use consult/1
load facts contained in file in prolog kb.
use atom_chars/2
split atom characters.
use findall/3
collect multiple solutions goal.
example:
?- [loginfo]. ?- findall(log(a,b,c,d), (log(a, b, c, d), sub_atom(d, 0, 1, _, 'f')), result). result = [log(name3, surname3, street3, 'france'), log(name4, surname4, street4, 'france')].
[loginfo]
shorthand consult(loginfo)
.
also, if don't repeat yourself:
?- findall(x, (x=log(_, _, _, d), x, sub_atom(d, 0, 1, _, 'f')), result). result = [log(name3, surname3, street3, 'france'), log(name4, surname4, street4, 'france')].
note: in file loginfo.pl
should put single quotes around atoms starting capital letters:
log(name1,surname1,street1,'belgium'). log(name2,surname2,street2,'germany'). log(name3,surname3,street3,'france'). log(name4,surname4,street4,'france').
read more prolog atoms @ prolog syntax - learn prolog now!
Comments
Post a Comment