如何在序言中打印所有数据库事实

2023-12-02

我在序言中有一个数据库,我想做的就是枚举它的元素并一一打印。如何才能做到这一点?

fact(is(mike,asthmatic)).
fact(has(andy,highPressure)).
fact(is(mike,smoker)).

我已经写了这个,它工作正常,但它从数据库中删除元素,所以我想访问它们而不删除。

print:- 
  retract(factA(P)),
    write(factA(P)),nl,
    fail.
  print.

您也可以考虑使用forall/2谓词:

print:-
 forall(fact(P), writeln(P)).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在序言中打印所有数据库事实 的相关文章

  • 从序言中的列表中过滤掉大量数字

    我想编写一个函数 通过删除所有小于或等于特定数字的内容来过滤数字列表 该函数将采用两个参数 数字列表和要过滤的数字 该函数应返回一个列表 其中包含大于过滤器编号的所有数字 有时像这样 filter num list L1 N L2 test
  • 如何确定矩阵的所有给定坐标都是相连的?

    给定一个网格 我如何确定网格的元素是否都在单个区域中 在下面的情况下是正确的 因为矩阵中的每个元素都有一个邻居 示例1 gridneighbours 1 1 1 2 1 3 2 1 2 2 2 3 3 1 4 1 4 2 true 然而在我
  • 如何在 Prolog 中修复这个循环谓词?

    为什么这不能在 Prolog 中定义 已婚 married X Y married Y X 这些类型的循环谓词不允许吗 我该如何解决它 Thanks 如果我的语法错误请原谅我 我已经有一段时间没有使用 Prolog 了 典型的解决方案是在子
  • 函数式语言中的多线程? (序言)

    当我的朋友在学校开始学习 Prolog 时 我嘲笑他学习了一门无用的语言 然而 他向我展示了一些我从来不知道可能发生的东西 我想知道这个技术从何而来 技术是这样的 permutation List isAMember X List dele
  • 编写 Prolog 谓词的最佳实践是什么,以便它以指定参数的不同方式工作

    我正在尝试实现一些简单的谓词 例如 my length 或 my append 如果我们事先知道我们想要找到列表的长度 或者我们想要附加两个列表 这对我来说很容易 即我知道什么是输入 什么是输出 在 Prolog 中 可以用其他方式做事 如
  • Prolog 程序从列表中删除每个第 n 个元素

    您能帮我解决以下问题吗 编写三元谓词delete nth从列表中删除每个第 n 个元素 样本运行 delete nth a b c d e f 2 L L a c e false delete nth a b c d e f 1 L L f
  • Prolog 追加与剪切运算符

    当我们使用append和cut操作符时会出现什么问题 append2 L L append2 H T L H TL append2 T L TL 我尝试了几种不同的输入 但总是成功 append2 1 2 5 L L 1 2 5 appen
  • Prolog 中的聊天机器人

    我一直在尝试在序言中创建一个聊天机器人 作为作业 到目前为止 我已经在 pl 文件中创建了一个数据库 并且列出了很多可能的对话 我知道序言是这样工作的 例如如果我们有 Chatbot good 然后我们输入 Chatbot good 它会回
  • Prolog - 从列表中删除具有相同第一个值的对

    我有这样的对象列表 list obj x y obj x z obj a b obj b c 我想删除那些共享相同第一个值的元素 这样我就可以使用修改后的列表 在这种情况下 最终列表将如下所示 list obj a b obj b c 有人
  • Prolog 中的迷你数独求解器中途停止

    我正在学习 七周七种语言 我只是想从书中找到一个例子 它解决迷你数独网格 4x4 作者使用的是 gprolog 但我使用的是 swi prolog 无论出于何种原因 我都无法让 gprolog 在我的虚拟机上工作 但 swi prolog
  • 非成员规则在 Prolog 中无法按预期工作

    我正在尝试在 Prolog 中创建一个迷宫程序 其目的是找到一条从迷宫起点到迷宫中心点 m 的路线 迷宫由使用四种颜色之一连接的正方形组成 蓝色 绿色 紫色或橙色 从起点到中心的路线遵循四种颜色的重复图案 我创建了以下代码 link2 A
  • 在列表列表中查找形状

    节目说明 该计划的目的 我的程序旨在计算 20X15 大小的平面中形状的位置 我有一个形状列表 其中包含形状类型 其 ID 半径或高度以及其在平面上的预期 X Y 位置 我有一个不同的二元运算列表 仅包含形状类型 其 id 及其与另一个形状
  • SWI Prolog 使用的检查优化会发生什么情况?

    去引用SICStus Prolog 手册 https sicstus sics se sicstus docs 3 12 9 html sicstus Occur html 逻辑编程背后的通常数学理论禁止 创建循环项 规定发生检查应该是 每
  • 计算序言中列表的排列

    在 序言艺术 第二版中有一个问题 您应该定义一个谓词 Even permutation Xs Ys 和类似的奇数排列 当您查询时 例如 Even permutation 1 2 3 2 3 1 和 odd permutation 1 2 3
  • 以系统的方式报告 Prolog 中查询失败的“原因”

    我正在 Prolog 中寻找一种方法 模式或内置功能 我可以用它来返回why一组谓词失败 至少就数据库中的谓词而言 当用户在系统中提出查询时 我试图能够说的不仅仅是 那是错误的 例如 假设我有两个谓词 blue 1如果某物是蓝色的 则为真
  • 如何找到排列的索引

    index List Idx Predicate will get List with permutation and I want to know index of permutation For example index 4 1 3
  • 斜线(/)在序言中做什么?

    我有这个代码 set value X Value X T X Value T set value X Value Y V T Y V NewT X Y set value X Value T NewT set value X Value X
  • Same_length/2 更好的纯版本

    鉴于频繁的纯定义same length 2 as same length same length As Bs same length As Bs same length L L loops 是否有一个纯粹的定义不会在这种情况下循环 类似于纯
  • SWI-Prolog 中的跨模块“接口”调用

    这可能是 SWI Prolog 模块系统特有的 假设我们有三个 Prolog 模块 在 SWI Prolog 模块系统中 robin 在文件中robin pl arthur 在文件中arthur pl helper 在文件中helper p
  • 使用 prolog 添加另外两次出现

    我有一个清单 a b a a a c c 我需要为每个元素添加两次以上的出现 最终结果应该是这样的 a a a b b b a a a a a c c c c 如果列表中有一个与下一个项目相同的项目 那么它会继续下去 直到出现一个新项目 当

随机推荐