我有一个带结构的符号表:
key → [value | R]
我想写一个谓词get_symbol / 2,它接收一个键(它的第一个参数),并将一个值(它的第二个参数)与符号表中与key相关的第一个值组合在一起。
任何人都可以帮我解决这个问题吗?非常感谢你。
答案 0 :(得分:1)
尚未描述符号表的实际表示。让我们假设一个逻辑表示,它将是一组事实,sym_table(Key, Value).
符号表将成为事实:
sym_table(key1, [val1_1, val1_2, ...]).
sym_table(key2, [val2_1, val2_2, ...]).
...
然后,获取给定键的第一个值的get_symbol/2
谓词将如下所示:
get_symbol(Key, Value) :-
sym_table(Key, [Value | _]).
请注意,如果(1)符号表中不存在Key
,或者(2)Key
没有值,则此谓词将失败,如预期的那样(我假设需要) (它在数据库中表示为sym_table(Key, []).
。