Prolog 中的关联列表

2023-12-28

我正在序言中做关联列表 我看到了这个主题,但我不明白代码。

Prolog 中的关联列表 https://stackoverflow.com/questions/50069875/associative-lists-in-prolog

要检查列表是否关联,这样做还不够:

 lists([_X, _Y]).
 lists([[H|_T]|L],[H|T]):- lists(L,T).

因为对于第一个 /1 我检查是否有这样的元素 [a,3] /2 以这种方式获取列表 [[a,4],[a,3]] 的列表。 因此,首先在 [a,3] 上传递调用 list/2,并检查基本情况为 true,然后在调用 [a,4] 后也为基本情况调用 true。

我错了一些东西,但我不明白

任何人都可以澄清我吗?


OP 2019-01-01 10:40:47Z 更新:

我尝试用这样的方式解决:

islist([_X,_Y]).
islist([_X|T]):- islist(T).

在这种情况下仅接受这样的输入

[[k,v],[k,v],[k,v]]

但接受所有输入,如下所示:

  • [a]
  • [k,v,v,v]
  • [[k,v],[k,v],[k,v,v]]

所以我的问题仍然存在。


从链接的问题:

"[]是列表; [此外,如果]k是一把钥匙,v是一个值并且a是一个 关联列表,那么[[k, v] | a]是一个关联列表。”

只需在 Prolog 中写下:

associative_list(L) :- L = [].
associative_list(L) :- K=K, V=V, associative_list(A), L = [[K, V] | A].

当然,Prolog 作为一种编程语言,不仅具有逻辑语义,还具有操作问题,因此最后一行最好写为

associative_list(L) :- L = [[_K, _V] | A], associative_list(A).

一种惯用的写法是

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

Prolog 中的关联列表 的相关文章

  • 如何在 git 中仅获取唯一的提交

    我想获取所有分支中唯一提交的列表 但是如果有人在分支中使用 rebase 则会提交松散的父项 如何解决这个问题呢 如何获取进行独特更改的提交列表 I use git log oneline graph cherry pick left ri
  • 在python中将列表转换为字符串

    我对 python 语言相当陌生 我一直在寻找这个问题的答案 我需要一个如下所示的列表 Kevin went to his computer He sat down He fell asleep 转换为如下字符串 Kevin went to
  • 如何在循环列表本身时删除列表元素而不重复它

    我在这个 Python for 语句中浪费了一点时间 class MyListContainer def init self self list def purge self for object in self list if objec
  • 检查列表是否已排序的 Pythonic 方法

    有没有一种Python式的方法来检查列表是否已经排序ASC or DESC listtimestamps 1 2 3 5 6 7 就像是isttimestamps isSorted 返回True or False 我想输入一些消息的时间戳列
  • SWI-Prolog 与 C++ 接口的问题

    我试图让 SWI Prolog 与 C 很好地配合 现在束手无策 现在 在我开始准确解释我的问题是什么之前 我想首先说明我的项目是关于什么的以及我选择了哪些工具来开发解决方案 我的教授分配给我的任务是开发一个 GUI 程序 作为 SWI p
  • 如何在 TS 中使用泛型谓词

    我想使用数组过滤谓词函数 e g const isNotEmptyName
  • 我应该如何在序言中设计这个谓词?

    我必须写一个谓词stepup L Z X where L是一个列表并且Z and X是整数 它应该返回true if the Z可以步入X使用列表中用户给出的合法步骤 例如 stepup 7 12 19 6 32 应该返回true sinc
  • python 中的扁平化列表

    我看过很多关于如何在 Python 中展平列表的帖子 但我一直无法理解这是如何运作的 reduce lambda x y x y myList 有人可以解释一下这是如何工作的吗 gt gt gt myList 1 2 3 4 5 6 7 8
  • 如何循环遍历关联数组并获取密钥?

    我的关联数组 arr array 1 gt Value1 2 gt Value2 10 gt Value10 使用以下代码 v充满了 arr的价值观 foreach arr as v echo v Value1 Value2 Value10
  • 向 python 元组添加条目

    我有一个代表 x y 点的元组列表 我还有每个点的值列表 如何将它们组合成列表列表 即每个点 x y val 一个条目 或元组列表 Thanks 您无法向元组添加条目 因为元组是不可变的 但您可以创建一个新的列表列表 new x y val
  • LISP 非常简单的列表问题

    我正在学习 lisp 而且我对此还很陌生 所以我想知道 如果我这样做 defparameter list 1 list 1 2 defparameter list 2 list 2 3 defparameter list 3 append
  • 测试 python 列表的所有元素是否为 False

    如何返回False如果所有元素都在列表中False 给定的列表是 data False False False Using any https docs python org 2 library functions html any gt
  • Prolog真的基于封闭世界假设吗?

    在下面封闭世界假设 https en wikipedia org wiki Closed world assumption 目前未知的事实是错误的 Prolog 的语义通常被认为遵循封闭世界假设 例如 here https cstheory
  • 在 Python 中获取数组作为 GET 查询参数

    我知道在 php 中我可以使用 GET key1 key2 检索以数组形式发送的 GET 数据 但这在 Python 中是可能的 因为我只收到一个字符串 但它不被识别为数组 列表 如果重要的话我使用flask werkzeug 参数名称的深
  • 在 R 中垂直绘制表 kable::extra 和 kable 的列表?

    我需要绘制表格列表一个在另一个之下 显示垂直 有任何想法吗 问题从这里开始 https stackoverflow com questions 73867229 plot a list of tables in a single table
  • 如何访问数据框中的一行嵌套字典

    我有一个 json 文件 如下所示 file name main question no Q 1 question what is answer user John comment It is defined as value number
  • Python列表内存存储[重复]

    这个问题在这里已经有答案了 据我了解 Python 列表本质上是 C 数组 它们分配特定的顺序内存块 但是 这些内存块实际上存储列表中的数据还是它们只是指向内存中存储实际数据的另一个位置 它可能取决于列表中存储的对象的大小吗 因为您可以轻松
  • 寻找嵌套列表中的最低值?

    我正在尝试编写一个函数 它接受一个列表并可以打印该列表中的最小整数 现在我试图弄清楚在嵌套列表中该怎么做 如果最低数字位于这些嵌套列表之一中 那么总的来说它将打印该数字 我的代码在这里 def listMin list2 3 4 2 99
  • Prolog 谓词参数中实例化模式指示符的含义

    查看Prolog文档 谓词签名有时会写成如下 foo Bar Baz Qux Mop 什么是 and 我该如何解释它们 另外 这些是唯一存在的还是还有更多 在这种情况下 这些前缀运算符代表实例化模式 即它们告诉您哪些参数应该是变量或在调用谓
  • 简单的布尔表达式测试

    user compiling user for byte code formula 0 P Q P Q P user compiled 2 lines read 768 bytes written 37208 ms yes formula

随机推荐

  • 当GDB调试核心文件时,是否可以将充满二进制数据的文件加载到GDB中?

    我正在使用 GDB 和核心文件调试崩溃 很大一部分内存空间被映射到进程中 这部分内存不会保存到核心文件中 我有一个文件 其中包含该映射内存中的所有数据 我想找到一种方法将该文件中的数据加载到 GDB 的某个偏移量处 以便我可以在该地址空间内
  • MUI v5 主题与情感/mui

    我已将 MUI 从 v4 升级到 v5 但是 我现在很难理解主题如何与可用的不同主题解决方案一起使用 我不太明白在哪里使用 MUI 主题 样式组件以及何时使用情感组件 在新组件中 我使用sxprop 来应用样式 但是我有很多组件仍在使用cr
  • 如何使用 ElementTree 在 python 中复制 xml 树?

    我正在使用 xml etree ElementTree 来解析 xml 文件 我用以下方式解析 xml 文件 import xml etree ElementTree as ET tree ET parse options xmlfile
  • Asp.net MVC 标签

    我有以下内容
  • 如何计算两个日期之间的天数? [复制]

    这个问题在这里已经有答案了 我正在计算 从 日期和 到 日期之间的天数 例如 如果起始日期为 13 04 2010 截止日期为 15 04 2010 则结果应为 如何使用 JavaScript 获取结果 const oneDay 24 60
  • Python 属性可调用

    有没有办法让属性和方法同名 我的意思是可以按通常方式使用的属性and可同时调用 像这样 gt gt gt b Book gt gt gt b pages 123 gt gt gt b pages 123 gt gt gt b pages i
  • 预订系统是否适合 Amazon DynamoDB / NoSQL?

    我正在开发基本的餐厅预订系统 并正在考虑使用亚马逊动态数据库对于这个项目 话虽如此 我什至不确定是否DynamoDB适合这样的事情或者我是否应该坚持MySQL RDS因为某些查询可能非常复杂 我需要的功能 用户将提交一个 查找餐桌 表格包含
  • 将字母替换为其字母表位置

    当我开始时 这对我来说看起来相当简单 但由于某种原因 每次我尝试在 codewars 上运行结果时 我都会得到一个空数组 我希望你能帮我找出问题所在 function alphabetPosition text text split joi
  • LINQ to CRM -Where 子句中的 OR

    我正在尝试使用 LINQ 从 Dynamics CRM 2011 获取一些数据 目标是获取自特定日期以来发生更改或子实体 PERC 文件 自同一日期以来发生更改的所有联系人记录 查询看起来像这样 Bring all students who
  • 调试 R 中的意外错误——如何找到错误发生的位置?

    有时 R 会抛出错误 例如 if ncol x 2 中的错误 参数长度为零 当我没有编写这样的代码时 没有附加信息 是否有通用方法可以查找哪个包中的哪个函数导致错误 由于大多数包都是压缩的 因此 grep 并不简单 usr lib R li
  • 使用特定于片段的“adjustPan”或“adjustResize”

    我想知道是否可以指定以编程方式或在xml一种使用方法windowSoftInputMode具体到一个Fragment 假设我只有一个activity其中包含两个fragment 一个片段应该使用adjustPan另一个adjustResiz
  • 如何使用 RestSharp 发布原始 Json?

    我有一个端点 它接受一个具有消息元素的 Json 对象 然后其余的可以具有不同的属性 这是一个例子 public void SendMessage IDictionary
  • 从backstack中获取到的fragment,再次调用onCreateView()

    请帮助我解决我的问题 I have MainActivity与框架布局 我想将一些片段替换到框架布局中 现在我遇到一个问题 它是 1 我创建了片段A并将其放入框架布局中 片段 A 称为onCreateView etc 2 然后我创建了片段B
  • 如何使用控制器代码在 laravel 5 的新选项卡中打开 PDF 视图页面?

    实际上 当我们保存用户数据时 我想在新选项卡中打开一个pdf页面 但是我们提交表单的页面重定向到同一页面 public function store Request request user new UserDetail full name
  • Windows 批处理文件:.bat 与 .cmd?

    据我了解 bat是旧的 16 位命名约定 并且 cmd适用于 32 位 Windows 即从 NT 开始 但我继续在各处看到 bat 文件 并且使用任一后缀它们似乎都可以完全相同地工作 假设我的代码永远不需要在早于 NT 的任何东西上运行
  • 在 bash 脚本中向 git 提供密码

    如何在 bash 脚本中使用 git fetch pull 提供密码 我确实需要在 bash 脚本中执行此操作 而不使用 ssh add 或类似的东西 是否可以 我尝试了 ssh agent 和 SSH ASKPASS 的解决方案 但没有任
  • 未捕获的类型错误:无法读取未定义的属性“authenticateClientAndRetrieveSessionId”

    I m using the Vue js with Vuetify framework I need to use a form with a location address field That field has to suggest
  • intellij 中的软包装

    我已经启用了所有soft wrap可在 Intellij 2017 3 中找到的设置 The Appearance General同意该列表 I had hit apply which typically actually does wor
  • iOS8 + XCode6 搜索后不显示标题视图

    我有适用于 iOS7 及更低版本的工作应用程序我使用 UISearchDisplayController 在表中进行搜索 问题 iOS8 中搜索后标题视图不显示 如下图所示 Before search After search I trie
  • Prolog 中的关联列表

    我正在序言中做关联列表 我看到了这个主题 但我不明白代码 Prolog 中的关联列表 https stackoverflow com questions 50069875 associative lists in prolog 要检查列表是