【发布时间】:2016-04-02 02:49:26
【问题描述】:
我想根据给定的 index_from i 到 index_to j 从原子列表中获取原子列表。我尝试了很多次,但它没有返回我的列表,而是一个“真”下面是我的代码,我错过了什么?如何获取我的输出列表而不是“真”。
% splitList(INPUT_LIST, INDEX_FROM, INDEX_TO, INDEX_FROM, OUTPUTLIST).
splitList(INPUT_LIST,INDEX_FROM,INDEX_TO, S,LIST) :-
INPUT_LIST = INPUT_LIST,
S = S,
INDEX_FROM =:= INDEX_TO + 1,
write(LIST),
LIST = LIST.
splitList(INPUT_LIST,INDEX_FROM,INDEX_TO,S,LIST) :-
INDEX_FROM < INDEX_TO + 1,
nth0(INDEX_FROM, INPUT_LIST, ELEMENT),
( INDEX_FROM =:= S ->
L = []
;
L = LIST
),
IF is INDEX_FROM + 1,
append([ELEMENT],L,NLIST),
splitList(INPUT_LIST,IF,INDEX_TO,S,NLIST),
!.
?- splitList(['TYPE_INT', 'IDENTIFIER', 'OPEN_P', 'TYPE_INT', 'IDENTIFIER', 'COMMA'],0,3,0,L).
?- true.
My atom list: ['TYPE_INT', 'IDENTIFIER', 'OPEN_P', 'TYPE_INT', 'IDENTIFIER', 'COMMA'],
if index_from is 1, index_to is 3, I am expecting a returned output_list:
['TYPE_INT', 'IDENTIFIER', 'OPEN_P', 'TYPE_INT'] instead of a 'true',
在我的基本情况下,'write(LIST) 确实写入了预期的列表',知道吗?
【问题讨论】: