Closed 4b5ent1 closed 5 years ago
待续。有空接着补。二楼留着填充随手想到的例子。 [定R为redis,R有主为R.master,有从为R.slave或.replica]
数有九宫,可用作namespace下的变量集合。九宫[1-9]为后天自然序/从左往右从上到下,负[1-9]为先天自然序,从上往下从右往左;[一至九]为宫序。这个设定主要方便矩阵运算以及兼容三值逻辑/平衡三进制。 九宫可以嵌套,比如宫三三,记为左一格的下属左一格。
术有八门,同理。类似极坐标与直角坐标的关系。
进展:Ld2e。Ld2e是elixir下的简化版演示: 用elixir实现一个简单的中文语句解析》https://zhuanlan.zhihu.com/p/46030123
这个方案已经属于历史讨论的参考内容了,从Ld2,到Ld2e这个poc,再到CPN+PN2,最后是C8/P语言,基本上意味着主线剧情已经步入正轨
背景:
一开始并没有要设计DSL的想法,只是想在python里做如下尝试:
这个方案记为GDPL/draft1[简称Ld1],在尝试的过程中意识到python无法实现APL的左参数结合运算,于是废弃,遂有draft2,也就是在python里另外实现一套DSL[简称Ld2,或芦笛]。
Design of Ld2:用途
构想Ld2的之初,并没有明确的目的,只是想先模拟古代的十进数制运算(十进制不等于十进位制)。后来觉得这样不够实用,于是参考SQL和正则表达式,有想兼容并包的考虑。但是编译SQL的工作远比替代正则要繁琐,故目前先只考虑正则部分的实现。
Ld2:概念
Ld2的很多概念都来自APL一族,比如stdlib一般叫标准库,而在Jsoftware里,叫词典。
Ld2目前主要用到的基本概念有:
目前设计的预设词义字很随意,背后没有什么很深的考虑,分为3组共42个:
Ld2:test_d2.py
第一部分:算术/术数
第二部分:正则
Q/A
问:如果业务相关的命名是白话 配上文言的关键词? 对:这个考虑到了,有个折中方案,就是[求]是基于单字的,而[有]和[设]是可以兼容当前的编程语言环境的。 对:设,类似于SQL里的DDL;求,类似SQL的DML;用[有]来声明非单字用词,比如苹果,自行车;比如[设苹果有三百,西瓜有二十,苹果和西瓜为水果]求[水果总数] 对:[定]是用来规范API/统一FFI引用/设置常量,这三个主要用途。比如设[定R为import request][设取为R.get,网址为xxx,求取网址]
ref
next/RFC