当前位置: 首页 > article >正文

逻辑的空无

  • [] = _. true
  • []=[_]. false
  • [[]] = [[]|[]]. true
  • |
  • member
  • member([],[]). false
  • _
  • member([],_). true
  • member(_,[]). false
  • combine3([], [], _).
  • combine3([], [], [laozi]).

[] = _. true

从用途讲。没有东西,空无可以用空表表示。但空表不是无。

[]=[_]. false

从属性讲。空表是没有东西的表,不是原子、变量、事实、规则。它里面是空无的。

[[]] = [[]|[]]. true

从使用讲。老子说无生万物,那万物都递归回到无才能做对题目。

|

把表分成头和尾。原话是:Prolog has a special built-in operator | which can be used to decompose a list into its head and tail。" |"它的操作范围一定在表里,它的后面是表的项,项多于两个要加[]。 member(X,[1,2|3,4])。这样写是会报错的,要写成 member(X,[1,2|[3,4]])。

member

题不讲了,都能找到答案。看看官网的member:

member(X,[X|T]).
member(X,[H|T]) :- member(X,T).

题目答案第一行都是combine1([],[],[])、combine2([],[],[])、combine3([],[],[]),递归到最后无生万物。为什么member没有这样写?

member([],[]). false

列表自己不能是自己的成员。调试直接一步就失败了。

Call:member([],[])
Fail:member([],[])

调试trace, (member([a],[b])).

 Call:member([a],[b])
 Call:member([a],[])
 Fail:member([a],[])
 Fail:member([a],[b])

_

后面给另外一种写法的时间讲到了这个符号,说是匿名参数,意思用它替换没用的参数T和H。These unnecessary variable names are distracting: it’s better to write predicates in a way that focuses attention on what is really important in each clause, and the anonymous variable gives us a nice way of doing this. That is, we can rewrite member/2 as follows:

member(X,[X|_]).
member(X,[_|T]) :- member(X,T).

它是空无的意思吗?文章的开头它是等于空表的,但是

member([],_). true

看来它没有那么简单。它是个新的东西,可以是空表、事实,规则,变量,数组。

member(_,[]). false

这似乎自圆其说了,空表里没有东西。如果把答案第一行里最后一个[]改成_

combine3([], [], _).

 Call:combine3([f, b, yip, yup],[glu, gla, gli, glo],_7698)
 Call:combine3([b, yip, yup],[gla, gli, glo],_1566)
 Call:combine3([yip, yup],[gli, glo],_1584)
 Call:combine3([yup],[glo],_1602)
 Call:combine3([],[],_1602)
 Exit:combine3([],[],_1596)
 Exit:combine3([yup],[glo],[join(yup,glo)|_1596])
 Exit:combine3([yip, yup],[gli, glo],[join(yip,gli), join(yup,glo)|_1596])
 Exit:combine3([b, yip, yup],[gla, gli, glo],[join(b,gla), join(yip,gli), join(yup,glo)|_1596])
 Exit:combine3([f, b, yip, yup],[glu, gla, gli, glo],[join(f,glu), join(b,gla), join(yip,gli), join(yup,glo)|_1596])

调试中它是临时变量_1569,R=[join(f,glu), join(b,gla), join(yip,gli), join(yup,glo)|],从结果看只是增加了"|"两个字符,意思也大体是一样的。 [join(yup,glo)|_]= [join(yup,glo)]这个的答案也是真。

combine3([], [], [laozi]).

扩展,这样改会回答什么呢?

鹿邑老子学院内老子雕像鹿邑老子学院内老子雕像

http://www.kler.cn/a/390961.html

相关文章:

  • AcWing 302 任务安排 斜率优化的dp
  • AMD CPU下pytorch 多GPU运行卡死和死锁解决
  • uniapp+vue2 设置全局变量和全局方法 (兼容h5/微信小程序)
  • k8s集群安装(kubeadm)
  • springboot项目中,使用ProGuard 对代码进行混淆
  • 字节跳动核心技术:TT推荐系统从0-1落地应用
  • SQL的三值逻辑
  • 基于vue框架的的汽车租赁系统34311(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • HTML查缺补漏
  • playwright学习记录2--定位方式
  • 【Unity/GameFramework】Start Force ——配置和表加载
  • 二分答案-整型二分—愤怒的牛-P1676 [USACO05FEB] Aggressive cows G
  • 微服务架构面试内容整理-监控与追踪-Zipkin
  • AlphaFold3中文安装教程
  • Unity类银河战士恶魔城学习总结(P117 Ice And Fire Item Effec 制作一把冰火属性的剑)
  • 练习题 - Django 4.x WWW 网址使用示例和配置方法
  • Git推送报错Authentication failed
  • 深入探讨钉钉与金蝶云星空的数据集成技术
  • 在linux上搭建一个nodejs服务_全流程
  • 如何将交叉编译配置在环境变量中
  • arcgis for js实现popupTemplate弹窗field名称和值转义
  • 【MySQL 保姆级教学】事务的自动提交和手动提交(重点)--上(13)
  • 【开源免费】基于SpringBoot+Vue.JS宠物咖啡馆平台(JAVA毕业设计)
  • uniapp的基本使用(easycom规范和条件编译)和uview组件的安装和使用
  • 天地图入门|标注|移动飞行|缩放,商用地图替换
  • 自动化新时代:机器取代工作,我们该如何重塑自我?