Prolog-映射(关联数组)

Joh*_*ith 5 list prolog

我正在学习序言,想知道是否有人给我指导如何去做这个问题,这是这个领域的第一个,知道如何做这个问题真的会帮助我进步。先感谢您。

使用 Prolog 定义一个谓词 mapof(K, M, V) ,这样,当调用 K 实例化为键,M 实例化为映射时,mapof 会将变量 V 实例化为与关联的值(或值之一) K 在映射 M 中。如果 K 在映射 M 中没有作为键出现,则谓词应该失败。

Yas*_*sel 2

使用内置谓词,您可以像这样member/2构建谓词:mapof/3

mapof(K, M, V):- member((K,V), M).
Run Code Online (Sandbox Code Playgroud)

咨询:

?- mapof(k1, [(k, a),(k1,b),(k2,c),(k1,d)], V).
V = b ;
V = d.
Run Code Online (Sandbox Code Playgroud)

  • 使其成为一个对的列表:用“KV”代替“(K, V)”,用“[ka, k1-b...]”代替“[(k, a), (k1, b)...” ]`。在 Prolog 中,对比“元组”更传统一些。 (4认同)