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 中的关联列表 的相关文章

  • JQuery .hasClass 用于 if 语句中的多个值

    我有一个简单的 if 语句 if html hasClass m320 do stuff 这按预期工作 但是 我想添加更多的类if statement检查是否存在任何类标签 我需要它 所以它不是全部 而只是至少一个类的存在 但它可以更多 我
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • 我应该在 Prolog 和一般情况下避免尾递归吗?

    我正在阅读 立即学习 Prolog 在线书籍 以获取乐趣 我正在尝试编写一个谓词 该谓词遍历列表的每个成员并向其添加一个 使用累加器 我已经在没有尾递归的情况下轻松完成了 addone addone X Xs Y Ys Y is X 1 a
  • Scala 中的随机列表[重复]

    这个问题在这里已经有答案了 我对 scala 中的随机播放列表有疑问 使用scala util Random 例如我有 val a cyan val b magenta val c yellow val d key val color Ra
  • R中的字典数据结构

    在 R 中 我有 例如 gt foo lt list a 1 b 2 c 3 如果我输入foo I get a 1 1 b 1 2 c 1 3 我怎样才能看透foo仅获取 键 列表 在这种情况下 a b c R 列表可以具有命名元素 因此可
  • 根据一个值找到列表内列表的最小值

    我在序言中有这个列表 dublin london 1000 dublin moscow london 5000 我想计算列表的最小值 这样答案应该是 dublin london 1000 这个问题有一些类似的问题序言中列表列表中的最小值 h
  • 需要在R中按行绑定列表数据

    我在 R 中按行绑定列表时遇到问题 我的列表数据集是 id 1 data k 1 id k b c 1 1 1 3 data k 2 id k b c 1 2 1 4 id 2 data k 1 id k b c 2 1 1 6 data
  • Same_length/2 更好的纯版本

    鉴于频繁的纯定义same length 2 as same length same length As Bs same length As Bs same length L L loops 是否有一个纯粹的定义不会在这种情况下循环 类似于纯
  • 大多数列表共有的项目

    给定一个列表列表 假设有 5 个列表 以便有一个可以使用的实数 我可以相对轻松地找到所有 5 个列表所共有的项目 请参阅使用 IEnumerable Intersect 求多个列表的交集 https stackoverflow com qu
  • PYTHON 从嵌套列表中删除元素

    我有一个像这样的数组 dataSet 387230 296163 323434 311472 323412 166282 410119 我想删除元素 311472 但不知道如何删除 我努力了 for set in dataSet for i
  • 使用 pandas 单元格中列表的长度选择行[重复]

    这个问题在这里已经有答案了 我有一张表 df a b c 1 x y x 2 x z c d 3 x t e f g 只是想知道如何使用 c 列的长度选择行 such as df loc len df c gt 1 我知道这是不对的 正确的
  • 谓词对于列表中的所有元素都必须为 true

    我有一组事实 likes john mary likes mary robert likes robert kate likes alan george likes alan mary likes george mary likes har
  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • 对 numpy 数组中存在的元组中的列进行切片

    我已将一个文本文件导入到 numpy 数组中 如下所示 data np genfromtxt f dtype None delimiter names None 其中 f 包含我的 csv 文件的路径 现在数据包含以下内容 array 53
  • 通过递归扩展 Prolog 目标?

    我 最终 实现了一些目标 这些目标将根据开始由 开始之后 and duration 然而 计划目标仅接受规定数量的任务 我想扩展计划目标的功能以接受单个列表并在计划时迭代该列表 不幸的是 我认为这将需要与can run and 冲突目标如下
  • 根据另一个列表的顺序对列表进行排序[重复]

    这个问题在这里已经有答案了 我需要对列表进行排序Person对象 List
  • 查找相邻成员

    我必须找出列表中的两个成员是否相邻 限制是使用append 3谓词 到目前为止 我已经完成了下面的操作 如果它是真的 它就有效 否则我得不到答案 就像它永远运行一样 adjacent X Y L append L1 X Y T1 appen
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 为什么 list() == 1 给出结果,而 list() > 1 给出错误? [复制]

    这个问题在这里已经有答案了 即使这些比较没有意义 为什么 list 1 return False but list gt 1 return gt not supported between instances of list and int
  • 如何将列表转换为地图?

    最近我和一位同事讨论了转换的最佳方式是什么List to Map在 Java 中 这样做是否有任何具体的好处 我想知道最佳的转换方法 如果有人可以指导我 我将非常感激 这是个好方法吗 List

随机推荐

  • 当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 要检查列表是