2012-11-10 45 views
1

做一个小例子,我想在特定pozition努力学习Prolog的,也弄不清什么是错

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 = [_,_,_,_]

回答

0

显然,符号数据类型存在一些问题,如果我使用整数,它会修复它本身。

此外,这是esential:

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