【概述】

Prolog的语法与其它常用语言(如C,JAVA等)不同,它更接近于自然语言。

【实例】

当我想表示“Mia是以女人”这个事实(之后会提到事实这个概念)的时候,我可以这么写

woman(mia).

这个格式代表这一个事实,a(b). b是a 事实上命名没什么要求,只要你自己记得就好

当我想要知道某个问题的答案,我就可以通过-?对其进行问询,比如

woman(mia).  

-? woman(mia).
yes

这就是使用Prolog的一个简单的例子

【常量和变量】

Prolog常量和变量的区分规则简单粗暴:

小写字母是常量,如abc;大写字母则是变量,如Abc

在要求输出时,常量输出自身,变量输出自己的代表值(比如我给Abc赋值了4396.输出Abc就是输出4396,输出abc就是输出abc)

【关系、属性】

两个对象的关系,用括号()表示,比如mia和zed是朋友,则写成

friend(mia,zed).
friend(zed,mia).

注意,第一条的意思是mia是zed的朋友,不代表zed是mia的朋友,二者互为朋友则需要各写一次 ,这个就叫关系

如果括号中,只有一个对象,那么这便是属性

woman(mia).

【规则】

规则是prolog进行推断的依据,可以类比其它语言中的if

比如刚才我们嫌朋友的判定太麻烦,于是就可以加入下面这条规则

friend(X, Y) :- friend(Y,X).

这里面的XY就是变量,其中 A:-B 代表从B可以推断出A,也就是B是true,那么A也是true

**:- **代表推理关系

那么,如果一个推断需要多个条件确定呢,那么就把条件用逗号隔开,就像A:- B,C 比如

mother(X, Y) :- child(Y,X), female(X).

X是Y的妈,需要二者有母子关系,并且X是女的

另外,如果一条规则取决于某个条件为false,则在条件之前加上+表示否定

【查询】

在对应的编译器(有时也叫解释器)中,使用 -? ... 来进行查询,...代表要查询的东西

【Prolog - 1.0 基础语法与概念】的更多相关文章

  1. swift3.0基础语法

    swift 3.0 基础语法 目录 01-变量和常量 02-运算符 03-可选项 04-条件语句 05-循环 06-字符串 07-元组 08-数组 09-字典 10-对象和类 11-枚举 12-属性 ...

  2. swift3.0基础语法(2)

    变量/常量,元组声明 var aaa = 0;//声明变量aaa 首次赋值时自动解析为Int类型 var aaa:Int = 0;//声明Int类型变量aaa let aaa = 0;//声明常量aa ...

  3. ECMAScript 5.0 基础语法(上)

    银子: 一般来说,一门编程语言的基础语法都是大同小异的.比如,python的基础语法,包括:数据类型,变量,作用域,运算符,流程控制(if...else...语句),循环,编码,数据类型的操作(增删改 ...

  4. ① Python3.0基础语法

    稍微了解一下py2.0和py3.0的区别,Py3.0在设计的时候,为了不带入过多的累赘,没有考虑向下兼容低版本的Py2.0.而在低版本中Py2.6作为过渡版,基本使用Py2.x的语法和库,同时考虑Py ...

  5. Swift3.0基础语法学习<二>

    对象和类: // // ViewController2.swift // SwiftBasicDemo // // Created by 思 彭 on 16/11/15. // Copyright © ...

  6. Vue 2.0基础语法:系统指令

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. Vue初体验 新建一个空的项目,引入vue.js文件.写如下代码: &l ...

  7. Swift3.0基础语法学习<一>

    // // ViewController.swift // SwiftBasicDemo // // Created by 思 彭 on 16/11/15. // Copyright © 2016年 ...

  8. 【Prolog - 2.0 基础应用】

    [术语统一 terms unify] 两者统一,只需满足下面两条件之一 1.原本就是相同的 2.包含变量,这些变量可以用术语统一实例化,从而得到相等的术语 mia和mia是统一的,42和42是统一的, ...

  9. ECMAScript 5.0 基础语法(下)“稍微重点一点点”

    接上篇 七.常用内置对象(复杂数据类型)(重点) (1)数组Array 创建:例  var colors = ['red','blue','green']       #推荐这样,因为简单粗暴 或:v ...

随机推荐

  1. flutter 使用vs编辑windows插件

    创建插件 mkdir win_test && cd win_test flutter create -t plugin --platforms windows ./ 找到win_tes ...

  2. XML & XPath & XQuery

    XML & XPath & XQuery full XPath demo https://www.w3.org/TR/xpath-full-text-30/ https://www.w ...

  3. FileReader, readAsText

    readastext filereader FileReader.readAsText() https://developer.mozilla.org/zh-CN/docs/Web/API/FileR ...

  4. BTC暴涨市值仅次于亚马逊,NGK推出新人助力空投,直接免费送VAST!

    数据显示,在谷歌搜索中,关键词"BTC"的全球搜索指数在过去一周达到满值100点.特斯拉"加持"下,比特币重启暴涨模式,最高报价48126美金单价,非小号数据显 ...

  5. NGK是公链吗?NGK为何会这么火?

    NGK号称区块链3.0的经典代表之作,公链底层技术开源发布,支撑百万级应用场景,集合了其他公链的优点,不仅拥有超高的TPS,军业级DPOSS共识机制,还有极高的网络确认速度和转账速度.更重要的是无需矿 ...

  6. 翻译:《实用的Python编程》02_06_List_comprehension

    目录 | 上一节 (2.5 collections模块) | 下一节 (2.7 对象模型) 2.6 列表推导式 一个常见的任务是处理列表中的项(译注:元素).本节介绍列表推导式,完成此任务的强大工具. ...

  7. css3自动换行排列

    如果一行放不下就会自动换行 display: flex; flex-wrap: wrap; 示例 : html <div class="container"> < ...

  8. URL 地址解析

    //虚拟目录的路径 Response.Write("<strong>Request.ApplicationPath:</strong>" + Request ...

  9. Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!

    封面:洛小汐 作者:潘潘 2021年,仰望天空,脚踏实地. 这算是春节后首篇 Mybatis 文了~ 跨了个年感觉写了有半个世纪 ... 借着女神节 ヾ(◍°∇°◍)ノ゙ 提前祝男神女神们越靓越富越嗨 ...

  10. js--this指向的相关问题

    前言 关于this的指向问题是前端面试中常考的知识点,也是我们开发学习中较难理解的问题.作为JavaScript的基础,需要我们彻底理解这一关键词.this作为JavaScript中非常复复杂的机制, ...