我正在尝试在 SWI-Prolog 中使用列表构造函数,但收到“dict”预期错误。
例如,
.(a, []) == [a].
ERROR: Type error: `dict' expected, found `a' (an atom)
ERROR: In:
ERROR: [11] throw(error(type_error(dict,a),_14808))
ERROR: [10] '$type_error'(dict,a) at /Applications/SWI-Prolog.app/Contents/swipl/boot/init.pl:3369
ERROR: [9] '$dicts':'.'(a,[],_14874) at /Applications/SWI-Prolog.app/Contents/swipl/boot/dicts.pl:46
ERROR: [8] '<meta-call>'(user:(...,...)) <foreign>
ERROR: [7] <user>
Exception: (9) '.'(a, [], _14200) ?
Run Code Online (Sandbox Code Playgroud)
谁能帮我配置这个功能?
我想跟踪SWI-Prolog中的内置append/3,但是我立刻得到了结果,看不到中间发生了什么.
有什么我需要做的事情来启用跟踪追踪?
?- trace .
true.
[trace] ?- append([a,b,c], [[],[2,3], b], X).
X = [a, b, c, [], [2, 3], b].
Run Code Online (Sandbox Code Playgroud) 我正在学习Prolog,并且不明白为什么?- [] = _.
在SWI-Prolog中返回true.
[]
是一个空列表,_
意味着它不是空的,对吧?
有人可以解释上述逻辑吗?
我想基于列表的第二个值按降序对元组列表进行排序,而不使用内置的排序谓词.
示例:(Name, Age)
.
unsorted_list = [(mary, 20), (jack, 50), (bob, 16), (bill, 20) ].
sorted_list = [(jack, 50), (bill, 20), (mary, 20), (bob, 16)].
Run Code Online (Sandbox Code Playgroud)
有谁知道这样做的优雅方式?