Prolog 中的 Lambda 表达式?

2024-01-07

我通常能够通过 maplist 找出 Lambda 的一些用法,但通常很难在 prolog 中使用 lambda。 可能是因为它与其他语言不同,因为统一。

这里是症结之一:如何应用声明的 Lambda 表达式? FE

LAM = \X^R^(....)

(奇怪,= 和 \ 之间必须有空格)

你好吗 :

\(LAM)(abc,R)

我想做的另一件事是像 FACT 一样存储 Lambda 表达式,以便我可以查询它,但也像 lambda 函数一样存储它,这样我就可以稍后进行绑定......f.e.只是在我的头顶...我可能认为这是错误的..

move = \Obj^From^To(move(Obj,From,To))

实例化:

?- \(move)(ball,ground,table).

或部分:

?- L2 = \(move)(ball).
?- L3 = \(L2)(table,floor)

query :

?- move(ball,F,T).

让我们考虑以下 lambda 项:

?- LAM_2 = \X^R^atom_chars(X,R).
   LAM_2 = \X^R^atom_chars(X,R).

The _2提醒我们,要使其成为真正的目标,还缺少两个论据。

要使用它,您现在必须提供这两个参数。要么使用一些元谓词,例如maplist/3或与call/3.

?- LAM_2 = \X^R^atom_chars(X,R), call(LAM_2, abc, Res).
   LAM_2 = \X^R^atom_chars(X,R), Res = [a,b,c].
?- LAM_2 = \X^R^atom_chars(X,R), maplist(LAM_2, [abc,def], Xss).
   LAM_2 = \X^R^atom_chars(X,R), Xss = [[a,b,c],[d,e,f]].

请注意变量X and R不要实例化!

真正有点不寻常的是,没有直接确定逻辑变量的作用域。它们在子句中都是全局的,因此我们必须注意这些变量不会被意外地重用。

另请注意,我们可以为上面的示例编写:

?- LAM_2 = atom_chars, call(LAM_2, abc, Res).
   LAM_2 = atom_chars, Res = [a,b,c].

像 FACT 一样存储 Lambda 表达式,以便我可以查询它

为什么不直接定义事实呢?否则没有办法做到这一点。

只要我们已经定义了事实,您给出的示例就有意义:

move(ball, table, floor).

现在我们可以通过包装添加参数来增量构造查询call/2 around.

?- L1_3 = move, L2_2 = call(move, ball), L3_0 = call(L2_2, table, X), L3_0.
   L1_3 = move, L2_2 = call(move, ball),
      L3_0 = call(call(move, ball), table, floor), X = floor.

然而,请注意,这样的部分目标如今很少使用。也可以直接使用call/N主要保留给元谓词,例如maplist/3.

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

Prolog 中的 Lambda 表达式? 的相关文章

随机推荐

  • Swift 异步 let 带循环

    我想并行获取数据 我找到了一个并行调用 API 的示例 但我想存储async let variables与循环 异步让我们举个例子 但是 此示例未使用循环 async let firstPhoto downloadPhoto named p
  • 使用 lapply 编写 data.frames 列表以分隔 CSV 文件

    问题说明了一切 我想获取一个充满 data frames 的列表对象 并将每个 data frame 写入一个单独的 csv 文件 其中 csv 文件的名称对应于列表对象的名称 这是一个可重现的示例以及我迄今为止编写的代码 df lt da
  • 带有 php 服务器套接字的 TLS

    Hi我的问题是 我的服务器端代码 编写为 php 中有一个打开的套接字 我需要转换此套接字以使用 TLS 在将流传递给使用清晰流的现有代码之前对流进行协商和描述没有加密 归档这个最简单的解决方案是什么 PHP 支持使用流上下文的 TLS S
  • Amazon Cognito 删除帐户

    我有 Amazon Cognito 用户池 其中添加了很少的用户 我已添加触发器以在发布确认后调用我的 Lambda 函数 我们在 Cognito 中是否有任何触发器在 用户注销 和 删除用户 之后调用 Lambda 函数 我在 Cogni
  • 如何使用 Unity WebCamTexture 保存 png

    我想使用设备本机相机保存图片 目前我无法将图像保存到文件中 我有一个原始图像 其纹理是本机设备相机图像 我正在从原始图像中获取字节并编码为 png 然后我将 png 写入我的计算机上的文件中 public WebCamTexture web
  • C# azure storage download 中路径访问被拒绝

    从天蓝色存储下载文件时 我遇到访问路径被拒绝的异常 下面是代码片段 string path c TEMP Retrieve storage account from connection string CloudStorageAccount
  • UITableViewCell 带有操作的按钮

    您好 我有一个自定义 UITableViewCell 带有三个按钮来处理购物车功能 加号 减号和删除按钮 我需要知道哪个单元格已被触摸 我已经尝试使用 标签解决方案 但由于细胞的生命周期 它不起作用 谁能帮我找到解决方案吗 提前致谢 我使用
  • 为什么我收到错误“MyActivity 不是封闭类?”

    我有一个 libgdx 程序 它以以下类开头 public class MyActivity extends AndroidApplication implements IActivityRequestHandler 我需要有一个Activ
  • Vuex axios调用无法处理422响应

    我正在尝试处理来自 API 的 422 响应 以防在进行异步 Axios 调用时数据无效 在组件中 我有一个类似的方法 async saveChanges this isSaving true await this store dispat
  • javax.imageio.IIOException:无法从 URL 获取输入流!

    我用java代码编写了一段代码来保存指定链接中的图像 它大部分工作正常 但有时它会抛出异常 即 javax imageio IIOException 无法从 URL 获取输入流 在 javax imageio ImageIO read Im
  • MySQL Select 和 IF() 语句

    我对 MySQL 有点陌生 我需要帮助 我有一张桌子Invoices和一张桌子Payments 我无法生成显示所有已支付发票的报告In Full or a Partial Payment已于 2019 年 12 月 31 日收到 一张发票可
  • OpenCL 内核未矢量化

    我正在尝试构建一个内核来进行并行字符串搜索 为此 我倾向于使用有限状态机 fsm 的转换表位于内核参数状态中 代码 kernel void Find constant char text const int offset const int
  • java:关闭子进程std流?

    来自 javadocjava lang Process http download oracle com javase 1 5 0 docs api java lang Process html 创建进程的方法可能不适用于某些本机平台上的特
  • scapy中sniff函数的过滤器无法正常工作

    看来filter of sniff功能无法正常工作 我正在使用以下过滤器执行嗅探 a sniff count 1 filter tcp and host 192 168 10 55 and port 14010 但有时sniff抓住一个UD
  • 在 Heroku 上部署时找不到模块错误

    我正在尝试将 Github 上的应用程序部署到 Heroku 但出现错误 src Index tsx 中出现错误 找不到模块 错误 无法解析 app src 中的 ConfigureStore src Index tsx 9 23 50 当
  • 预计响应会成功,但结果是 302

    我有以下文章控制器 def myarticles myarticles current student articles all respond to do format format html format xml render xml
  • 从 Javascript 调用 SAML IdP

    我再次需要社区的明智建议 我必须在我的 SSO 系统中集成多个 Web 应用程序 IdP 是 Active Directory 联合服务 ADFS2 SP 是 Weblogic 托管服务器 我在 Web SSO 配置文件中对 SP 启动的用
  • Bootstrap 轮播图像未正确对齐

    请看下面的图片 我们正在使用 bootstrap carousel 来旋转图像 但是 当窗口宽度较大时 图像与边框无法正确对齐 但是 无论窗口的宽度如何 bootstrap 提供的轮播示例始终可以正常工作 遵循代码 有人可以解释为什么轮播的
  • 如何在Java中将UTC时间戳转换为本地日、小时、分钟?

    给定时间戳 1245613885 这是 GMT 中的时间戳 如何使用服务器的本地时区信息将其转换为 Java 中的年 日 小时 分钟值 您可以使用java util Calendar http download oracle com jav
  • Prolog 中的 Lambda 表达式?

    我通常能够通过 maplist 找出 Lambda 的一些用法 但通常很难在 prolog 中使用 lambda 可能是因为它与其他语言不同 因为统一 这里是症结之一 如何应用声明的 Lambda 表达式 FE LAM X R 奇怪 和 之