Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

0RO语言教程

简介

来源

0ro(zero relates objects)(读作zero)的名称的灵感来自于从无到有的设计哲学,具体哲学理念请看下一部分。

哲学理念

0ro的原子语义极其简洁,但却能构造极多逻辑性的概念,这种从零到一、从无到有的理念是0ro的核心理念。

核心理论

0ro参考了范畴论的设计理念,但不完全基于范畴论。

词法

每一行是一个语句,一行内用空格分隔后的每一个单词(包含特殊符号)都是一个标识符。 如果是特殊符号,则会优先寻找一串连续的特殊符号作为独立的标识符。 如果分隔后没有符号组成,则直接忽略并舍弃。

语法与语义

0ro中,基础单元有且只有概念和关系(类似于范畴论中的对象和态射),所有具体化的概念都是这两者派生出来的,每个概念用单独的标识符表示。一行内的所有标识符表示之间互相有关系。 语句顺序从上到下。

空行

空行无语义。

注释

注释一般用#符号开头,可放到一行的末尾。

概念范围

一个概念会尽可能贪心地表示所有可能的概念,除非它被约束。

命题成立句式

关系

每行语句及子句都是一个关系,称为关系语句,代表这些概念之间是有某种关系的,即进行命题约束。

因变量

当一个关系没有被固定时,意味着它就是被其他条件约束的因变量。

自变量

当一个关系被固定时,那么它就是约束其他条件的自变量,但固定化后会保留之前作为因变量的约束。(如果自变量作为某个关系内的一个概念,而这个关系被使用时,会创建一个临时会话,使用时会满足输入的概念的约束,关系结束后则解除输入的概念的约束。)

固定转换

每行的语句(非子句)代表的关系都可以被固定或释放,即在同个模块内,因变量转义为自变量或自变量转义为因变量,且该语句被称为固定语句。同一模块内,没有被转换的所有变量默认都是因变量。

举例说明

考虑以下代码(摘自标准库文件./std/math/category/sufficient.0ro.txt):

conclusions relations # 表示因变量`conclutions`和`relations`有关联。
relations # 固定`relations`,让它作为自变量,但仍然限制它与`conclutions`有关。
conditions relations # 表示自变量`conditions`和因变量`relations`有关系。

conditions sufficient conclusions # 表示对于任何这样的句式,都会填充句中概念使得满足相关的命题。

这段代码定义了一个充分推导关系,表示“如果有一个自变量conditions,那么因变量conclusions就一定是满足conditions的一个概念”,即conclusions是所有满足conditions约束的概念组成的集合的子集。

模块引用

以.开头且后面部分以.分隔的语句(或子句)的作用表示的是某个相对路径目录下的概念,可以用花括号、小括号或中括号(推荐使用花括号)在某一层级下引用被,分隔的多个分支下的概念。模块以目录为基本单位,但固定状态是互相独立的。如果没找到目标概念,则提供一个概念共享的钩子,方便同级模块下约束同一个概念的指代。

举例说明

考虑以下代码(摘自标准库文件./std/math/category/necessary.0ro.txt):

.sufficient # 导入`./std/math/category/sufficient.0ro.txt`代码文件的`sufficient`概念。

conditions sufficient conclusions # 约束`conditions`能充分推出`conclusions`。

conclusions necessary conditions # 接着定义必要推导关系。

语法糖

子句

我们可以使用子句语法让任何关系代指一个概念,并且用小括号、中括号或花括号作为分隔符。(建议使用花括号)

举例说明

考虑以下代码:

I like oranges best

如果我们不知道我喜欢什么,那么想要获取喜欢什么就得这么写:

I like {my favourate food} best
I eat {my favourate food}

这需要先定义一个中间概念my favourate food,然后再使用,很麻烦。 但是,如果我们能再加上:

I like {what I like best} best

那么解析器就会发现what I like best代指的概念和oranges完全等价,此时就可以这样使用:

I eat {what I like best}

概念详解

对于概念范围的选定,更加详细的解释如下:

有一个待定概念P,P是概念C的集合,C又是纯原子概念A的集合,也就是说,C属于P,A属于C。一开始,所有概念都是P,但是等到解析结束的时候,解析器会自动将这个待定概念P坍缩为在已有约束下能覆盖最多概念的概念C,这个概念C是纯原子概念A的集合,代表着概念C在关系r中与另一个概念C'中所有A的纯原子概念都能与C'的A'产生联系。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors