prolog - 如何在Prolog中“编写一个返回与文字相反的谓词”?
问题描述
我如何编写一个谓词,它将在 Prolog 中返回与文字相反的内容,以便如果我执行以下查询,我会得到以下答案。
?- opposite(+a,L).
L = -a.
?- opposite(-a,L).
L = +a.
解决方案
简直是
opposite(+(X),-(X)).
opposite(-(X),+(X)).
因为+
or-
不是常量 (atom) 的一部分a
,而是它前面的运算符(所以-a
实际上是非运算符表达式-(a)
)。所以我们只需要捕获该运算符之前的任何内容X
,并说L
相反的运算符在相同的之前X
。
所以:
?- opposite(-a,X).
X = +a.
?- opposite(+a,X).
X = -a.
推荐阅读
- java - 为什么 Intellij 项目类路径损坏?
- spring-boot - @Configuration 类应该放在哪里?
- android - 关于 setFollowRedirects() 的困惑
- python - 为什么我的 Flask 应用程序会重定向一条路由,即使我没有配置它?
- angular - 如何在没有表单功能的情况下防止 Angular 中的无效数据
- fullcalendar - FullCalendar 是否支持年度视图?
- r - ggplot2 修复重叠的 y 标签
- python - FileNotFoundError: [Errno 2] 没有这样的文件或目录 google colab
- node.js - order-update.js 在事务 api actions-on-google 中发送“{}”作为响应
- javascript - 未捕获的 ReferenceError:i2d 未在 Drawing.js:1 中定义