我有一个用read/1子句执行用户输入的程序。然后创建一个包含输入信息的列表,如下所示:
write('Input' )
read(Folks),
consult('database.pl.pl'),
Predic =.. [Inform, [ Name, Bussi, Folks ] ],
assert(Predic),在磁盘中写入:
Inform(['Juc', 'Rockstar', 'Desprogra', 1899, 1999, ( 'Bill', 'Steven', 'Demi' ) ]).因此,我不能将()放在列表的末尾:
..., ( 'Bill', 'Steven', 'Demi' ) ]我知道这是因为,必须读取read(Folks),的:'Bill', 'Steven', 'Demi'。
发布于 2015-05-26 06:49:02
发布于 2015-05-26 19:12:02
让:
superflatten([],A,A).
superflatten([[]|Q],A,R) :- !,
superflatten(Q,A,R).
superflatten([H|Q],A,R) :-
H =.. [K|L],
( L = [] -> append(A,[K],T1); superflatten(L,A,T1) ),
superflatten(Q,T1,R).
superflatten(X,R) :- superflatten(X,[],R).一些查询和回答的例子:
debug] ?- superflatten([],R).
R = [].
[debug] ?- superflatten([a,b],R).
R = [a, b].
[debug] ?- superflatten([a,[b,c]],R).
R = [a, b, c].
[debug] ?- superflatten([a,[],[b,c]],R).
R = [a, b, c].
[debug] ?- superflatten([a,(b,c)],R).
R = [a, b, c].
[debug] ?- superflatten([a,t(b,c)],R).
R = [a, b, c].https://stackoverflow.com/questions/30444443
复制相似问题