Пытаясь выучить пролог, не могу понять что не так

Делая небольшой пример, я хочу вставить символ в список в определенном положении

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
Другие вопросы по тегам