Пытаясь выучить пролог, не могу понять что не так
Делая небольшой пример, я хочу вставить символ в список в определенном положении
domains
element = symbol
list = element*
position = integer
predicates
insert (element, position, list, list) %(input,input,input,output)
clauses
insert (E,_,[],[E]).
insert (E, 1,[H|T],[E|[H|T]]). %(I insert E on the "first" position)
% I get errors how E and T are not bound. I have no idea how to make them bound
insert (E,P,[H|T],[H1|T1]) :-
P > 1,
P1 = P - 1,
insert (E,P1,T,T1).
Это не работает... но я не знаю почему. Ну, это вроде работает. Я хотел бы это показать мне outputList = [NEW_LIST]
вместо того, чтобы показывать каждый symbolName=_
а потом outputList = [_,_,_,_]
,
1 ответ
Решение
По-видимому, существует некоторая проблема с символьным типом данных, если я использую целое число, оно само исправляется.
Кроме того, это важно:
domains
element = integer
list = element*
position = integer
predicates
insert (element, position, list, list) %(input,input,input,output)
clauses
insert (E,_,[],[E]).
insert (E, 1,[H|T],[E|[H|T]]).
insert (E,P,[H|T],[H|T1]) :- % has to be "H" (or anything else) in both
P > 1, % so prolog understands what we are trying to do
P1 = P - 1, % don't really understand why though
insert (E,P1,T,T1). % I might be wrong