首页 > 其他分享 >逻辑的空无

逻辑的空无

时间:2024-11-13 11:14:47浏览次数:3  
标签:逻辑 join glo yup combine3 member yip

[] = _. 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]).

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

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

标签:逻辑,join,glo,yup,combine3,member,yip
From: https://blog.csdn.net/denghai_csdn/article/details/143676498

相关文章

  • 微信小程序实现在调用获取手机号组件前增加逻辑
    微信小程序实现在调用获取手机号组件前增加逻辑背景解决方法wxmljs背景做小程序开发时,有了一个需求是:在登录界面,调用微信小程序获取手机号组件进行登录。调用组件前需要检查是否同意了隐私协议,同意后才调用,否则提示用户先同意协议。然而小程序调用手机号的组件只能......
  • 武汉纺织大学数字逻辑(头歌平台)
    二、组合逻辑设计1.加法器设计1.1半加器设计1.2全加器设计1.3行波进位加法器设计1.41位十进制加法器设计2.多路选择器设计与应用2.12选1选择器设计2.24选1选择器设计2.38选1选择器设计2.4多路选择器的应用......
  • 平时有使用过AI服务吗——AI人工服务案例助力你了解底层代码逻辑!
    让我们详细说明这个智能客服系统包含的内容,并提供完整的代码示例。我们将涵盖以下几个方面:智能客服(使用Rasa)情感分析(使用HuggingFaceTransformers)自然语言生成(NLG)(使用HuggingFaceTransformers)语音识别(ASR)(使用SpeechRecognition)语音合成(TTS)(使用gTTS)用户行为分析(使用Pandas......
  • Linux硬盘挂载与磁盘分区基础(一)(主分区、拓展分区、逻辑分区)
      我们常用windows时,会区分C盘、D盘之类的(A、B盘是软盘)就是所谓的分区,这么做为了方便数据管理,比如扩容之类的。  本文采用Linux(Ubuntu20.04)来介绍分区,其它Linux系统基本一样的。  首先,我们需要熟悉几个概念:  硬盘:存储数据用的硬件,比如移动硬盘、固态硬盘、U盘等,有了硬......
  • 数字逻辑电路-74194模5扭环形计数器、74160同步7-23加计数器-Quartus2-时序逻辑电路:
    (建议两个实验分成两个项目做,只有LowFreqClk设计会重复)(有些地方会省略文件置顶和编译,有问题的话看看是不是文件没置顶或没编译)一、实验预习:用双向移位寄存器74194和门电路设计一个右移模5的扭环计数器;并画出电路图二、实验内容:1.双向移位寄存器74194的应用——扭环形......
  • 【双11最后一天】活动商品低至8折!DL32逻辑分析仪Pro、加热台、电烙铁、开发板等活动产
    【双11最后一天】活动商品低至8折!DL32逻辑分析仪、加热台、电烙铁、开发板等活动产品限时优惠!各种爆款产品火热售卖中!双11最后一天,全店活动商品低至8折!全新DL32逻辑分析仪、HP15加热台,还有爆款产品T80智能电烙铁、DS100Mini手持示波器,开发板等活动产品限时优惠!各种新品及爆款产......
  • 《 C++ 修炼全景指南:十九 》想懂数据库?深入 B 树的世界,揭示高效存储背后的逻辑
    摘要本文深入探讨了B树的原理、操作、性能优化及其实际应用。B树作为一种平衡多路树结构,因其高效的查找、插入和删除操作广泛应用于数据库与文件系统中。文章首先介绍了B树的定义与性质,并详细阐述了节点分裂、合并等核心操作的实现方法。接着,通过分析B树在数据库检......
  • 【UE4】基于蓝图的抛物线的基本逻辑(第三人称)
    抛物线基本逻辑的参考与第一人称版UE中实现投掷物品的抛物线(第一人称)-哔哩哔哩以及参考视频UE4手雷等抛物线_哔哩哔哩_bilibili本人新手请大家多多担待,有问题大家帮忙指出来,创建抛物线自定义事件时先创建这几个变量和场景组件初始位置(X:0.0,Y:0.0,Z:0.0)最高位置(X:0.0,Y:......
  • 【UE4】基于蓝图拖拽物品的基本逻辑
    整体效果是基于获取玩家的鼠标位置到场景里的位置再tick就不会出现拖拽卡顿会很丝滑本人新手请大家多多担待,有问题大家帮忙指出来先创建拖拽物品的Actor(可以命名为Bp_Box01),再创建放置物品的位置(Bp_Box02)。放置物体在Bp_Box01中放置一个正方体,再在Bp_Box02中放置正方体和......
  • 【UE4】基于蓝图的更换弹夹的基本逻辑
    创建更换子弹前需要创建的变量均为整数变量。总备弹=180弹夹内剩余的子弹=30弹夹内子弹的总量=301.创建事件更换弹夹2.首先需要判断更换弹夹的条件,在满足什么条件下才可以更换弹夹。2.1更换弹夹的第一个条件必须是总备弹大于等于0的时候,只有在总备弹大于等于0的时候才有......