Prolog的append有什么问题?

2024-01-12

根据我大学的逻辑课程,对于以下查询,我们可以预期得到与 Prolog 定义不同的结果:

append([], a, X)

(统一为X=a).

但我不明白他们的目的是什么?考虑到附加应该统一 X(在本例中)的串联,应该期望什么作为有效响应[] and a?

我认为他们可能期望回报false or [a];但是我认为这应该是连接的结果a and [], not [] and a (since []是尾部[a]).


这里的重点是我们期望append/3持有only for lists.

在您显示的查询中,a is not一份清单,还没有append/3 still holds.

因此,关系实际上是更一般超出我们最初的预期:它也适用于其他情况!

之所以会这样,可以从传统定义的第一个子句看出append/3:



append([], Bs, Bs).
  

仅此一条已经进行查询succeed!没有任何额外的 pure 子句可以阻止这种情况。因此,必须是这个条款受限制的如果我们希望这种关系成立only对于列表。这意味着,我们必须放置一个约束对于第二个参数,我们通过在子句正文中进行说明来实现:



append([], Bs, Bs) :- ... (left as an exercise)
  

这显然是有代价的:性能。

因此,这里需要在性能和精度之间进行权衡。在 Prolog 中,我们经常接受这样的权衡,因为我们隐式地使用这样的谓词only与预期的条款。另一方面,对于许多谓词,我们希望受益于域名错误 or 输入错误如果未使用预期类型调用它们。

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

Prolog的append有什么问题? 的相关文章

  • 如何将字符串/数字附加到字符串?

    我有一个函数 void generateLevelFromPlist int currentLevel NSString mainPath NSBundle mainBundle bundlePath itemPositionPlistLo
  • 展平列表

    尝试解决练习 07http www ic unicamp br meidanis courses mc336 2009s2 prolog problemas http www ic unicamp br meidanis courses m
  • Android 追加文本文件

    我试图将对话框选择器中的唤醒时间和睡眠时间记录到这样的文本文件中 但是对方法 commitToFile2 的调用不会附加文本文件 savedData txt 我知道这段代码非常非常肮脏 我是 Java 新手 所以任何其他建议将不胜感激 pa
  • Python:如何修复我的代码以便追加将参数添加到列表中?

    我对 python 很陌生 我一直在尝试执行此代码 其中我使用 tkinter 按钮命令来运行函数 它可以工作 但append 没有执行 这意味着它不会附加到列表中 列表和包含附加的函数位于类外部 然后通过使用 tkinter 按钮命令在类
  • jquery Append() 中的 If 语句

    在我的 jquery Append 中 我不想运行 IF 语句来在除第一个对象之外的所有对象上包含图像 Like var i 0 divDetailsForSelectedInfo append div class roundedAndBo
  • Prolog 变量查询中的“\+”问题

    我正在读 七周七种语言 atm 我对一些 Prolog 查询感到困惑 我不明白对 否 的回答 The friends pl文件看起来像这样 likes wallace cheese likes grommit cheese likes we
  • Prolog 中的聊天机器人

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

    为了计算两个相同长度列表之间的汉明距离 我使用foldl hamm A B 0 R 有了这个定义hamm 4 hamm A A V V hamm A B V0 V1 A B V1 is V0 1 第一条规则的删减可以防止不必要的回溯 然而
  • 如何实现 not_all_equal/1 谓词

    如何实施not all equal 1谓词 如果给定列表包含至少 2 个不同的元素 则该谓词成功 否则失败 这是我的尝试 不是很纯粹的尝试 not all equal L member H1 L member H2 L H1 H2 gt t
  • Prolog - 从列表中删除具有相同第一个值的对

    我有这样的对象列表 list obj x y obj x z obj a b obj b c 我想删除那些共享相同第一个值的元素 这样我就可以使用修改后的列表 在这种情况下 最终列表将如下所示 list obj a b obj b c 有人
  • 井字游戏的极小极大

    我正在尝试用简单的极小极大算法来解决井字游戏 简单 但应该涵盖很多语言 到目前为止我所拥有的 该板表示为 9 个 未绑定 变量的数组 这些变量可以设置为x or o 获胜条件基本上是 win Player X1 X2 X3 X1 Playe
  • 为什么在具体化中将 clpfd 变量分配给实际值?

    我正在开发一个 SWI Prolog 程序 该程序使用 CLP FD 约束来找到特定问题的解决方案 为此 我碰巧需要两个列表的 未定位 重叠 那是 List La长度为A List Lb长度为 B A gt B 未定位的重叠列表是La Lb
  • Prolog 匹配 vs miniKanren 统一

    在 Prolog 人工智能编程中 Bratko 在第 58 页说了以下内容 Prolog 中的匹配对应于逻辑中所谓的统一 但是 我们避免使用 统一 这个词 因为出于效率原因 在大多数 Prolog 系统中 匹配的实现方式并不完全对应于统一
  • 在 Prolog、尾递归中计算斐波那契数列

    我想在 Prolog 中以递归尾部模式计算斐波那契数列 fibonacci 0 0 fibonacci 1 1 fibonacci N Result fibonacci N 1 0 fibonacci N Result Count Coun
  • 将元素追加到 Angular QueryList

    有没有办法将新元素追加到 QueryList 中 例如 我有一个像这样的查询列表 ContentChildren SysColumn syscolumns QueryList
  • jquery 动态 iframe - !document.write 和 IE 问题

    为什么这在所有浏览器中都有效 除了 IE var iframe var doc iframe contents doc find head append 但是 如果我在 document write 中使用非 jquery 对象 它在 IE
  • 以系统的方式报告 Prolog 中查询失败的“原因”

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

    我正在尝试为有效数字指定 DCG 如下所示 value Number gt valid number Number 基本上检查指定的值是否是数字 它也可能是变量 因此有必要检查 我不知道如何构建这个valid number不过 DCG 谓词
  • Prolog:子句在源文件中不在一起

    我有这段代码 Family tree female pen male tom male bob female liz female pat female ann male jim parent pam bob parent tom bob
  • Prolog 展平列表

    flatten A B R islist A gt flatten A R1 R R1 write A append A R1 R flatten B R1 flatten X X islist 这是我写的代码 但我有奇怪的问题 I get

随机推荐

  • 如何在本地测试 Azure 队列触发器函数?

    我创建了一个Azure Functions 项目并正在本地测试它 https blog kloud com au 2016 12 02 debugging azure functions in our local box 下面是我创建云队列
  • 如何求解稀疏矩阵的线性方程 AX=b

    我有稀疏矩阵 A 120 000 120 000 和向量 b 120 000 我想使用 Eigen 库求解线性系统 AX b 我尝试按照文档进行操作 但总是出现错误 我还尝试将矩阵更改为稠密并求解系统 Eigen MatrixXd H N
  • 由 find_or_create_by_ 创建的重复记录

    我有一个 ActiveRecord 对象 Corporation 我的项目中创建该对象实例的唯一调用如下所示 corp Corporation find or create by eveid and user id self corpora
  • 我可以在Windows下改变python ttk组合框的颜色吗?

    我在 Linux 下得到了工作代码 用于更改 python 2 7 下 Ttk 的 TCombobox 的外观 如果我在windows下运行代码 它不会工作 我知道 ttk 小部件的颜色和属性是依赖于平台的 我仍然不知道如何更改 Windo
  • 未找到 MY_Controller 类

    我想解决的主要问题是当有人想要访问管理面板时检查用户会话 我已经创建了 MY Controller 类并将其放入库中 class MY Controller extends CI Session public logged in FALSE
  • Android Viewpager EdgeEffect自定义颜色

    我正在尝试在我的应用程序的 Viewpager 中自定义 EdgeEffect 目的是用定制的红色 ics Overscroll EdgeEffect 替换蓝色 ics Overscroll EdgeEffect 所以一开始我编辑了过度滚动
  • cuda 3D纹理插值

    我正在尝试使用纹理内存和下面的代码通过 cuda 插入 3D 数组 我已将输入 f x y z 绘制为固定的 z 值 然后为 x 和 y 插入数组并再次绘制 i 它们看起来完全不同 我还在一维中尝试过这个 使用不同的代码 并且它在那里工作
  • 如何处理 UsernameNotFoundException spring security

    如何处理UsernameNotFoundException 在 Spring Security 中 当用户名未找到时UserDetailsService实现抛出一个UsernameNotFoundException 例如这样 Overrid
  • 将 UIDatePicker 从 12 小时制更改为 24 小时制并返回

    很抱歉 我的第一个问题有点简单 我花了一天时间阅读 NSLocale 和 NSCalendar 类描述 但我不知道这是否可能 我有一个 UIDatePicker 处于 UIDatePickerModeDateAndTime 模式 当前它根据
  • Java 正则表达式中的 POSIX 字符等效项

    我想在Java中使用这样的正则表达式 a e i 但是Java不支持POSIX类 a e etc 我怎样才能做到这一点 更准确地说 有没有办法不使用 US ASCII Java确实支持posix 字符类 http download orac
  • 使用 micronaut-data-hibernate-jpa 库连接到 jpa 时出现错误

    我想将 JPA 用于 micronaut 为此我正在使用io micronaut data micronaut data hibernate jpa 1 0 0 M1图书馆 每当我运行应用程序并点击端点来获取数据时 我都会收到以下错误 me
  • Keycloak / SpringBoot - OpenID 配置中提供的颁发者 与请求的颁发者 不匹配

    我对我刚刚加入的项目有疑问 技术栈 Jhipster 与 Angular 和 SpringBoot Keycloak 我将正确的网址替换为 example com 和 bar com 应用程序 yaml https i stack imgu
  • Html.Action - 获取与发布

    我经常这样做 div Html Action Create Product div 这很方便 因为我可以将产品创建表单的绘制委托给另一个控制器操作以嵌入到某个位置 但是 我遇到的问题是 该方法有时 我还没有弄清楚在什么条件下 会调用我的控制
  • 我如何知道鼠标指针是否位于 HTML 元素上?

    我有一个定时事件 我想根据鼠标指针所在的 HTML 元素采取不同的行为 假设我有 HTML 元素 有没有办法知道鼠标指针当前是否位于其顶部 我很了解 onmouseover onmouseout 事件以及如何使用它们 我正在使用 JQuer
  • 多个外键?

    我有一张表 用于跟踪将产品从一个供应商运送到另一个供应商的天数和成本 我们 非常出色 p 将运输供应商 FedEx UPS 和产品处理供应商 Think Dunder Mifflin 存储在 VENDOR 表中 因此 我的 SHIPPING
  • 使用硬浮点时使用 gcc 交叉编译简单示例时出现问题

    当我尝试编译一个简单的例子时test c int main return 0 对于具有硬浮点 ABI 的 cortex m7 目标 使用以下调用 arm none eabi gcc mcpu cortex m7 mfpu fpv5 d16
  • 类型错误:res.json 不是函数

    我正在尝试发送两个 json 但它不起作用 它打印TypeError res json is not a function但我不明白为什么会发生 有什么想法吗 谢谢 app post danger function response req
  • GWT XML(xml 对象映射)

    在 Java 中 我们可以使用 JAXB 等工具自动为我们进行类对象映射 但是在 GWT 中 由于反射有限 JAXB 不可用 唯一的方法是 Document messageDom XMLParser parse messageXml Nod
  • 为什么在 CLOB 上使用 REPLACE 函数会导致 CACHE_LOBS 增加...?

    我需要在 CLOB 变量上使用内置 REPLACE 函数 作为更大的 PL SQL 流程的一部分 我使用的是 Oracle 11g R2 该函数工作正常 因为它根据需要进行替换 但随着过程运行 大约有 250 万条记录需要处理 它的速度严重
  • Prolog的append有什么问题?

    根据我大学的逻辑课程 对于以下查询 我们可以预期得到与 Prolog 定义不同的结果 append a X 统一为X a 但我不明白他们的目的是什么 考虑到附加应该统一 X 在本例中 的串联 应该期望什么作为有效响应 and a 我认为他们