列出给定库模块中的谓词

2024-01-25

有没有办法列出 SICStus Prolog 给定库模块中定义的所有谓词?

例如如果我加载列表模块:

| ?- use_module(library(lists)).

我可以从提示符中运行另一个谓词来告诉我刚刚导入了哪些谓词吗?


这适用于 SWI-Prolog,但是谓词current_predicate/1 http://www.swi-prolog.org/pldoc/doc_for?object=current_predicate/1被标记为“ISO”,所以至少在 SICSTUS 中尝试一下。这是我得到的:



?- use_module(library(lists)).
true.

?- current_predicate(lists:P).
P = max_list/3 ;
P = flatten/2 ;
% and so on
  

或者可能:



?- findall(P, current_predicate(lists:P), Ps).
Ps = [max_list/3, flatten/2, nth1/4, reverse/4, must_be/2, min_member_/3, reverse/2, transpose_pairs/2, ... / ...|...].
  

您应该能够在任何实现的 Prolog 中执行此操作current_predicate/1.

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

列出给定库模块中的谓词 的相关文章

  • 序言中的谓词

    我需要在 prolog 中定义一个谓词 它将一个列表作为输入 对 gt 5 的数字的平方求和 并减去 这就是我目前所拥有的 pred 0 pred Head Tail Result gr85 Head pred Tail Total Res
  • 如何查明 Prolog 是否执行尾调用优化

    使用SWI Prolog Win x64 的开发版本 我为 a 编写了一个 DCG 谓词确定性词法分析器 托管在 github 上 https github com sebgod goldparser prolog 因此所有外部谓词都没有留
  • 在 SWI-Prolog 中,是否有一种简单的方法可以使用 REPL 将数字从一个基数转换为另一个基数?

    在使用 REPL 的 SWI Prolog 中 可以轻松地从任何基数转换为基数 10 例如 X 16 FF X 255 X 2 11111111 X 255 然而这失败了 没想到它会起作用 但显示了我的想法 2 X 16 FF ERROR
  • Prolog - 回文函子

    我正在尝试写一个谓词palindrome 1在 Prolog 中 当且仅当其列表输入由回文列表组成时 这才是正确的 例如 palindrome 1 2 3 4 5 4 3 2 1 is true 有什么想法或解决方案吗 回文列表是一个向后读
  • Smullyan 数值机的解决方案

    在这里我建议找到 Smullyan 数值机的解决方案 此处定义 http heras gilsanz com manuel smullyan machines html 问题陈述 它们是接受数字列表作为输入 并根据输入模式遵循一些规则将其转
  • 如何确定矩阵的所有给定坐标都是相连的?

    给定一个网格 我如何确定网格的元素是否都在单个区域中 在下面的情况下是正确的 因为矩阵中的每个元素都有一个邻居 示例1 gridneighbours 1 1 1 2 1 3 2 1 2 2 2 3 3 1 4 1 4 2 true 然而在我
  • 如何在 Prolog 中修复这个循环谓词?

    为什么这不能在 Prolog 中定义 已婚 married X Y married Y X 这些类型的循环谓词不允许吗 我该如何解决它 Thanks 如果我的语法错误请原谅我 我已经有一段时间没有使用 Prolog 了 典型的解决方案是在子
  • 展平列表

    尝试解决练习 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
  • 二叉树的 Herbrand 宇宙、Herbrand 基础和 Herbrand 模型(序言)

    什么是二叉树的 Herbrand 宇宙 Herbrand Base 和 Herbrand Model binary tree empty binary tree tree Left Element Right binary tree Lef
  • 如何在 Prolog 中求反

    我是 PROLOG 新手 正处于练习的开始阶段这一页 https sites google com site prologsite prolog course a first glimpse 给定规则parent X Y 和male X 我
  • 如何实现 not_all_equal/1 谓词

    如何实施not all equal 1谓词 如果给定列表包含至少 2 个不同的元素 则该谓词成功 否则失败 这是我的尝试 不是很纯粹的尝试 not all equal L member H1 L member H2 L H1 H2 gt t
  • Prolog 中的匹配元组

    为什么Prolog匹配 X Xs 包含更多元素的元组 一个例子 test2 X Xs write X nl test2 Xs test2 X write X nl test
  • SWI-Prolog 中的约束编程

    我想要一个包含三个元素 A B 和 C 的列表 L 并具有以下约束 use module library clpfd L A B C L ins 1 3 A B C 但是 它给出了一个错误 Syntax error Operator exp
  • 非成员规则在 Prolog 中无法按预期工作

    我正在尝试在 Prolog 中创建一个迷宫程序 其目的是找到一条从迷宫起点到迷宫中心点 m 的路线 迷宫由使用四种颜色之一连接的正方形组成 蓝色 绿色 紫色或橙色 从起点到中心的路线遵循四种颜色的重复图案 我创建了以下代码 link2 A
  • 在 Prolog 中动态拆分列表

    我从序言开始几周 但我看到了更深入的操作列表的递归谓词的构造 我的问题是 是否可以构建一个谓词 将给定列表拆分为给定数量的其他列表 比如我想象的 split H T NumberLists Lists 递归实现 split 1 2 3 4
  • 如何在 Prolog 中计算数字序列的和

    任务是计算从0到M的自然数之和 我使用SWI Prolog编写了以下代码 my sum From To From gt To my sum From To S From 0 Next is 1 S is 1 my sum Next To S
  • 在 prolog 中读取用户输入的字符串

    我是 Prolog 初学者 我正在使用 swi prolog 刚刚开始使用它 我需要将用户输入字符串拆分到列表中 我尝试了以下代码 但出现错误 指出 在子句正文中完全停止 无法重新定义 2 write Enter the String nl
  • 列表中的连续元素

    我正在阻止一个谓词来编码Prolog 我需要对两个谓词进行编码 如果我打电话 u a b c d e f X 它会给X a b X b c X c d 如果我打电话 v a b c d e f X 它会给X a b X c d X e f
  • Prolog 罗马数字(属性语法)

    我正在做一项作业prolog questions tagged prolog扫描数字列表并应返回该列表是否是有效的罗马数字以及数字的十进制值 前任 1 roman N I N 1 true 2 当我运行我认为应该工作的程序时 十进制值总是正

随机推荐