current_prolog_flag double_quotes DCG(代码或字符)?

2024-04-11

在使用 SWI Prolog DCG 时,我注意到有些人注意到

:- set_prolog_flag(double_quotes, codes).

Jan http://www.swi-prolog.org/pldoc/man?section=strings

而其他人则注意到

:- set_prolog_flag(double_quotes, chars).

false https://stackoverflow.com/a/8269897/1243762, Markus https://www.metalevel.at/prolog/dcg, mat https://stackoverflow.com/a/32871568/1243762

与 DCG 和短语一起使用时有什么区别(如果有的话)?

参考

字符串类型及其双引号语法 http://www.swi-prolog.org/pldoc/man?section=strings
DCG https://www.metalevel.at/prolog/dcg
DCG语法规则 http://www.swi-prolog.org/pldoc/man?section=DCG
双引号 http://www.swi-prolog.org/pldoc/man?section=flags
设置序言标志 http://www.swi-prolog.org/pldoc/man?predicate=set_prolog_flag/2


正如名字一样double_quotes意味着,这个标志如何影响双引号 (i.e.: ") 进行处理。

无论此类报价是否与 DCG 一起使用,这都适用。但是,它在与 DCG 结合使用时特别有用,因为您可以使用:



?- phrase(nt(NT), "test").
  

从而自动将要解析的短语视为字符列表(在本例中:[t,e,s,t])。这对于交互式测试用例来说非常有用。

The 错误回答 https://stackoverflow.com/a/8269897/1613573您链接的内容很好地解释了这一点。另请注意答案中的以下引用:

This notation [using chars!] gives more readable answers. It can be even more compactly displayed since the double quote notation can be used for printing any list of one-char atoms.

很清楚chars产生比以下内容更易读的答案codes。例如:



?- Xs = "hello".
Xs = [h, e, l, l, o].
  

与,与codes:



?- Xs = "hello".
Xs = [104, 101, 108, 108, 111].
  

(Ahem.)

Historically, Han shot first https://en.wikipedia.org/wiki/Han_shot_first chars came first! Only later, this was changed to using codes by default. A quite unfortunate choice, in my view. Other languages like Haskell work like Prolog originally did:



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

current_prolog_flag double_quotes DCG(代码或字符)? 的相关文章

  • 使用 g++ 编译 C++11

    我正在尝试将我的 C 编译器更新到 C 11 我搜索了一下 得出的结论是我必须使用该标志 std c 0x or std gnu 0x 但我对标志了解不多 谁能帮我 我使用的是 Ubuntu 12 04 这是当我尝试使用 C 11 中包含的
  • 从序言中的列表中过滤掉大量数字

    我想编写一个函数 通过删除所有小于或等于特定数字的内容来过滤数字列表 该函数将采用两个参数 数字列表和要过滤的数字 该函数应返回一个列表 其中包含大于过滤器编号的所有数字 有时像这样 filter num list L1 N L2 test
  • Prolog 时间重叠问题

    假设我有这个知识库 free ann slot time 8 0 time 9 0 free ann slot time 10 0 time 11 0 free bob slot time 7 0 time 8 30 free bob sl
  • 在 dll 中嵌入 prolog 引擎

    我最近一直在开发一个嵌入 prolog 推理引擎的 C 应用程序 正如标题中所述 我现在尝试生成一个 DLL 而不是可执行文件 以便我可以在另一个项目中使用它 由于我是 DLL 开发的新手 我想我可以从一个小例子开始 我有3个文件 like
  • 展平列表

    尝试解决练习 07http www ic unicamp br meidanis courses mc336 2009s2 prolog problemas http www ic unicamp br meidanis courses m
  • 如何使用 Prolog 查找二叉树的深度

    我正在学习 Prolog 并试图找到一个深度二叉树使用 Prolog 我代表一棵树是这样的 nil is a tree tree 1 nil nil this is a leaf tree 1 tree 1 nil nil nil this
  • 关于构建列表直至满足条件

    我想解决 巨猫军团之谜 https youtu be YeMVoJKn1Tg由 Dan Finkel 使用 Prolog 编写 基本上你从 0 然后使用以下三个操作之一构建此列表 添加5 添加7 或采取sqrt 当您成功建立一个列表后 您就
  • 如何在 Prolog 中求反

    我是 PROLOG 新手 正处于练习的开始阶段这一页 https sites google com site prologsite prolog course a first glimpse 给定规则parent X Y 和male X 我
  • Prolog 中的聊天机器人

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

    我有根据我之前的问题制作的跟踪元解释器here https stackoverflow com questions 27235148 implementing cut in tracing meta interpreter prolog 我
  • 如何在 GNU Prolog 中使用“long int”?

    所以基本上看来 GNU Prolog 在我的 32 位 x86 Linux 上使用 28 位整数 下面的代码无法编译 foo A A0 is 0xdeadbeef A1 is A0 gt gt 8 A2 is A0 gt gt 16 A3
  • 寻找最大最小值集合

    我正在尝试编写一个 天真的或半天真的 程序 给定一组元素和许多玩家将其划分为这个数量的玩家 并且对于每个这样的划分取最小值 按总和 子集 然后 我想计算所有这些最小除法的最大值 这被称为https en wikipedia org wiki
  • Prolog 中的匹配元组

    为什么Prolog匹配 X Xs 包含更多元素的元组 一个例子 test2 X Xs write X nl test2 Xs test2 X write X nl test
  • 井字游戏的极小极大

    我正在尝试用简单的极小极大算法来解决井字游戏 简单 但应该涵盖很多语言 到目前为止我所拥有的 该板表示为 9 个 未绑定 变量的数组 这些变量可以设置为x or o 获胜条件基本上是 win Player X1 X2 X3 X1 Playe
  • Prolog 匹配 vs miniKanren 统一

    在 Prolog 人工智能编程中 Bratko 在第 58 页说了以下内容 Prolog 中的匹配对应于逻辑中所谓的统一 但是 我们避免使用 统一 这个词 因为出于效率原因 在大多数 Prolog 系统中 匹配的实现方式并不完全对应于统一
  • python pandas 标记如果列中每个值有多个唯一行

    在下面的数据框中 我有三列 Code Category Count X A 89734 X A 239487 Y B 298787 Z B 87980 W C 098454 我需要添加一列 如果一个类别有多个唯一代码 如上例中的 B 它会获
  • 在 Prolog 中动态拆分列表

    我从序言开始几周 但我看到了更深入的操作列表的递归谓词的构造 我的问题是 是否可以构建一个谓词 将给定列表拆分为给定数量的其他列表 比如我想象的 split H T NumberLists Lists 递归实现 split 1 2 3 4
  • Prolog 实现 and/2、or/2、nand/2、nor/2、xor/2 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在序言中实现以下谓词并将它们用于真值表 and 2 or 2 nand 2 nor 2 xor 2 也许有人可以告诉我如何实现和
  • 实现用户定义的算术函数

    如何添加函数 例如汉明权重 并在右侧出现的表达式中使用它是一些 is 2 goal 像 goal expansion 或 term expansion 这样的东西可以帮助这里吗 我承认这不是一个大功能 但它可以提高我的一些 Prolog 程
  • Prolog内存问题

    我想找到一种方法来分析我在序言中编写的谓词 一个巨大的谓词 的内存使用情况 我目前正在运行它swi http www swi prolog org and yap http www dcc fc up pt vsc Yap document

随机推荐

  • 过滤 ObservableCollection?

    当我将 ListBox 直接绑定到 ObservableCollection 时 我会在 ListBox 中显示实时更新 但是一旦我在混合中添加其他 LINQ 方法 我的 ListBox 就不再收到 ObservableCollection
  • 如何告诉 CPAN make 和 cc 的路径

    使用 opencsw org 软件包在 Solaris 上运行 Perl 5 10 CPAN 软件包中的 Makefile PL 无法找到正确的路径和 cc gcc 我找到了make的路径并将其设置为gmake 但我找不到cc的任何设置 我
  • bash while 循环没有按预期工作

    我知道从技术上讲 它可能会按原样工作 并且这是人们所期望的bash语言 但这不是我所期望和写的 我试图让一切尽可能简单 This is fileA Name Status Networks Image Plans HostName A PA
  • Google App Engine 数据存储区索引上限

    有人可以用简单的英语解释一下数据存储中 5000 个索引的上限吗 这是否意味着存储对象的索引列表属性不能包含超过 5000 个元素 数据存储区限制单个实体可以拥有的索引条目数量 此限制设置为每个实体 5000 个元素 您可以使用以下命令轻松
  • Julia - 迭代字典中的键组合

    有没有一种巧妙的方法来迭代字典中的键组合 我的字典有这样的值 1 gt 1 2 2 3 gt 15 3 gt 6 7 8 4 9 11 gt 3 我需要做的是获取所有长度的键组合1 n where n可能是FX 3 就像上面的例子一样 我想
  • java.sql.SQLFeatureNotSupportedException:方法 org.postgresql.jdbc4.Jdbc4Connection.isValid(int) 尚未实现。在Spring引导中

    我正在开发Spring Boot Microservices例子 在这个例子中 我使用了config server and licensing service并成功部署于docker 当我调用 REST 端点时 http localhost
  • java.lang.RuntimeException:在 android.media.MediaRecorder.start(本机方法)处启动失败

    我正在处理电话录音 当我开始录制电话时 不幸的是它停止了 它给出错误 MediaRecorder 启动失败 2147483648 我请告诉我我的代码有什么问题 这是我的代码 public class incomingcall extends
  • 将 PDF 文档打印到 esc/pos 热敏打印机

    我们正在使用 xamarin forms 开发 POS APP 因为我们需要将收据打印到通过 LAN 连接的 esc pos 热敏打印机 我们的应用程序支持多语言 通过更改代码页使用 esc pos 命令打印多种语言效果非常好 但它仅适用于
  • 使用 JAX-RS 获取服务器的基本 url

    如何使用 JAX RS 获取服务器的基本 url 基本上 当程序位于本地主机上时 我想要 http localhost 8080 当程序位于实时服务器上时 我想要 http www theSite com 我正在使用泽西岛框架 是的 您可以
  • Firestore 每日配额

    我使用开发了一个示例应用程序Angular and 火库 我大约两个月前部署了我的应用程序 从那时起一直运行良好 然而 在上周 我注意到该应用程序在使用几个小时后因 客户端离线 错误而被阻止 我发现使用2个小时后我超出了每日的阅读操作限额
  • 在负载平衡的 Tornado 站点上使用 apache 基准测试获取失败的请求,但没有记录

    也许这是一个关于 ab 的问题 而不是关于 Tornado 的问题 但有些事情没有意义 我这样运行基准测试 ab n 100 http localdomainname 2 tornados being 1 nginx Concurrency
  • python 2 doctest 为何会失败,但失败消息中的值却没有差异?

    我在 Windows 中使用 Python 2 7 9 我有一个 UTF 8 编码的 python 脚本文件 其中包含以下内容 coding utf 8 def test func u gt gt gt test func u return
  • 以 RTL 格式格式化时 TextView 内的数字会反转

    里面的数字TextView以 RTL 格式格式化时会发生反转 当数字位于文本内的末尾时TextView他们逆转了 我怎样才能以编程方式解决这个问题 例如 下面的数字是相反的 它们应该显示为 误解 像 ARABIC 这样的 RTL 语言中的数
  • 如何解决对等依赖安装问题

    我正在尝试使用 npm 安装react contenteditable 但是 eslint 的对等依赖项不允许我安装以下错误的 risal 我正在使用 Ubuntu 18 04 LTS 操作系统 这是我用来安装react contented
  • 根据控制器指定不同的_Layout.cshtml

    我创建了一个 asp mvc3 项目 我想要根据选择的控制器有不同的 Layout cshtml 这是因为控制器 1 有 2 个按钮 控制器 2 有 3 个按钮 控制器 3 有 4 个按钮 每个控制器适用于特定类型的用户 因此取决于登录 我
  • Laravel 中的 Socket.io 轮询 404

    我正在尝试使用 Socket io 实现一个聊天应用程序 进入我的 Laravel 应用程序 聊天应用程序本身运行良好 但我在 Laravel 中遇到问题 我尝试在端口 8000 上提供 Laravel 服务 并在 8000 上提供聊天服务
  • 访问回调 user_is_anonymous 的反义词是什么?

    我知道在 drupal 模块中使用它来指定只有匿名用户才能看到该模块 仅指定登录用户的回调是什么 我有一个页面 我只想让登录用户访问 谢谢 它是用户 is logged in http api drupal org api function
  • 在 AVD 上运行自定义 ROM

    有谁知道是否可以在 AVD 上运行自定义 ROM 我该怎么做 谢谢 如果您自己构建自定义 rom 则在构建自定义 rom 后 您可以使用以下命令启动它emulator 但要做到这一点 你首先需要为模拟器构建 ROM 通常 full gene
  • 数据库结果的数组结构

    这可能是一个非常微不足道的问题 但是以下哪种方法是构造返回数据库结果的数组的最佳实践 比如说博客文章列表 对文章进行排序和分组 或者对元素进行排序和分组 Array title gt Array 0 gt Untitled 1 gt Unt
  • current_prolog_flag double_quotes DCG(代码或字符)?

    在使用 SWI Prolog DCG 时 我注意到有些人注意到 set prolog flag double quotes codes Jan http www swi prolog org pldoc man section string