SWI Prolog 中的 Python pickling 等效吗?

2024-01-19

我有一个 Prolog 程序,我正在对所有达到一定长度的字符串进行强力搜索。我正在检查哪些字符串与特定模式匹配,不断添加模式,直到希望找到一组涵盖所有字符串的模式。我想将哪些存储到与我的任何模式都不匹配的文件中,这样当我添加新模式时,我只需要检查剩余的内容,而不是再次进行整个强力搜索。

如果我用 python 编写这个,我只需pickle字符串列表,然后从文件中加载它。有人知道如何在 Prolog 中做类似的事情吗?

我有丰富的 Prolog 编程经验,但 Prolog IO 的经验很少。我可能可以编写一个谓词来读取文件并将其解析为术语,但我认为可能有一种方法可以更轻松地做到这一点。


如果您想写出一个术语并能够在以后随时读回(除了变量名称),请使用 ISO 内置write_canonical/1 or write_canonical/2. It is 当前系统很好地支持 http://www.complang.tuwien.ac.at/ulrich/iso-prolog/conformity_assessment#write_canonical. writeq/1 and write/1也经常工作,但并非总是如此。writeq/1使用运算符语法(因此您需要使用存在的相同运算符来读回它)并且write/1不使用引号。所以它们“大部分时间”都在工作——直到它们坏掉。

或者,您可以使用 ISO 写入选项[quoted(true), ignore_ops(true), numbervars(false)] in write_term/2 or write_term/3。如果您想使用更多选项,例如variable_names/1还保留变量的名称。

另请注意,书面术语末尾不包括句点。所以你必须在最后手动写一个空格和一个句点。需要该空格来确保由图形字符组成的原子不会与末尾的句点发生冲突。想想写原子'---'必须写成--- .而不是作为---.您可以只在原子的情况下写空格。或者一个不“粘合”的原子.

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

SWI Prolog 中的 Python pickling 等效吗? 的相关文章

随机推荐

  • 如何将有空间的目录路径传递给Windows shell?

    我正在使用 IEcapt exe 来捕获网站快照 问题是 它无法处理有空间的路径目录 像这样 c program files 有什么方法可以传递这样的目录以使其工作吗 通常只需双引号 Windows 路径即可工作 IEcapt exe C
  • 正则表达式在 String.matches() 中不起作用

    我有一小段代码 String words apf hum dkoe 12f for String s words if s matches a z System out println s 应该打印 dkoe 但它什么也没打印 欢迎来到 J
  • 打开第3层,map.on('moveend',..):区分用户交互和map.setCenter()调用

    我正在为 GIS 应用程序实现 OL 并希望在用户滚动地图时添加 20 秒的超时 之后 GPS 自动跟踪功能应恢复 为此 我正在利用 map on moveend move func 侦听器 问题是它无法区分用户滚动还是位置更改来自map
  • 根据视口大小销毁并初始化 Owl Carousel 2

    我读过很多有关此问题的讨论 但没有一个为我解决这个问题 我正在使用 enquire js 来执行我的视口条件 我的代码如下 var slider home farms slider sliderOptions items 1 animate
  • MPI - Bsend 用法

    当我想在异步发送之后释放资源时 MPI Bsend 好吗 这会吗 MPI Bsend array 0 delete array 阻止我删除我想要发送的内存 问题是 当适当的recv打开时 数组可能已经被删除 UPD void RectMPI
  • 在 .NET 对象上设置“可为空”属性

    我有一些 NET 互操作代码 我在其中设法加载对象并读取属性 但是在设置对象的属性时遇到问题 以下是 Delphi 代码的相关部分 uses mscorlib TLB Winapi ActiveX type Irrelevant parts
  • 选择带有“over partition by”的案例

    正确的语法是什么 或者是否可以在 select 中使用 case 并在其中进行分区 使用SQL Server 2012 a unique id b a string xf c values d values e values select
  • 使用 Qualifier 和 InjectionPoint 作为 @HttpParam 在 CDI/WELD 中实现 @RequestParam

    玻璃鱼错误 INFO Initializing Mojarra 2 1 6 SNAPSHOT 20111206 for context NNTPjsf INFO WEB0671 Loading application NNTPjsf at
  • PHP图像上传-重命名而不丢失扩展名?

    我目前有 file name HTTP POST FILES uid name random digit rand 0000 9999 new file name random digit file name path uploads im
  • Xcode“使用未声明的标识符”

    我知道很多人问这个问题 但所有答案都是特定的应用程序 所以我不明白如何为我的应用程序工作 tableData NSArray arrayWithObjects Chocolate Brownie Mushroom Risotto nil N
  • 使用 jQuery 发送新的 ajax 请求之前添加延迟

    我有一个指向 html 页面的链接列表 ul li a href assets data item1 html Item 1 a li li a href assets data item2 html Item 2 a li li a hr
  • 签名 APK:失败 [INSTALL_FAILED_DEXOPT].. 已更新

    生成的 app release apk 在我的设备上不起作用 但 app debug apk 工作正常 Update 转到我的应用程序的先前版本后 in my MainActivity我有这个字符串 public class MainAct
  • 获取codeigniter中复选框的多个值

    我目前正在做一个项目 我有一个复选框 用户将在其中选择公司提供的服务类型 当我尝试在控制器中发布所选的服务 例如检查了 2 个服务 时 我只获得一项服务 问题是如何获取复选框中的多个值 注意 我还尝试在控制器中使用 foreach 但收到一
  • GitHub:限制对特定分支的访问[重复]

    这个问题在这里已经有答案了 有没有办法限制对存储库中某些分支的访问 我们有生产和主分支 有时会因流氓推送而变得混乱 Not with GitHub in the same repo as opposed to local repos whi
  • 错误:启动 my_project docker 设置时,池与此地址空间上的其他池重叠

    我正在尝试设置 docker 但收到以下错误 错误 池与此地址空间上的其他池重叠 请问我应该怎么解决呢 您能否向我们提供您运行的命令以及您的docker compose yml请归档 您遇到的错误表明您存在网络地址冲突 要检查您是否可以运行
  • GitHub Actions:仅针对某些拉取请求基础分支运行步骤

    我已经在 GitHub Actions 上工作了一段时间了 我们已经制定了指定的工作流程 工作流程是用 yaml 编写的 我正在尝试放一些if的条件为github ref并且 yaml 的该块在运行时被跳过 这意味着 如果针对 X 分支提出
  • 如何从循环内正确修改Python循环的迭代器

    我基本上需要的是检查列表中的每个元素 如果符合某些条件 我想将其从列表中删除 比如说 list a b c d e 我基本上想写 原则上而不是我尝试实现的实际代码 如果列表中的元素是 b 或 c 则将其从列表中删除并获取下一个 But fo
  • 将 SVG 转换为 png 或其他?

    由于在 iPython 笔记本中显示 SVG 文件的内容非常容易 是否还有一种方法 也很简单 来获取我们在 png 文件或其他文件中看到的内容 from IPython display import SVG SVG filename ima
  • sonar-plugin-api 4.5.2 的 Javadoc

    为了开发我自己的SonarQube插件 我正在搜索sonar plugin api 4 5 2的javadoc api 但我在互联网上没有找到它 对于 3 x x 版本 maven 还下载了 jar 的源代码 因此我能够从中生成 javad
  • SWI Prolog 中的 Python pickling 等效吗?

    我有一个 Prolog 程序 我正在对所有达到一定长度的字符串进行强力搜索 我正在检查哪些字符串与特定模式匹配 不断添加模式 直到希望找到一组涵盖所有字符串的模式 我想将哪些存储到与我的任何模式都不匹配的文件中 这样当我添加新模式时 我只需