duangsuse::Echo
足以体现抽提代码重要性
这就好像是赶一群羊,找到头羊就可以领着一起走,不然一堆代码各走各的,都不听你的。写起来简单机械一点,改起来看起来通通选择死亡。
Ctrl+V『写代码』一时爽,测试修bug火葬场。
Ctrl+V『写代码』一时爽,测试修bug火葬场。
🤔JavaScript 基于 ArrayBuffer 和 DataView 的兼容抽象部分已经写完,暂时不对其正确性作任何保证。
正在准备开源到GitHub。
正在准备开源到GitHub。
duangsuse::Echo
🤔JavaScript 基于 ArrayBuffer 和 DataView 的兼容抽象部分已经写完,暂时不对其正确性作任何保证。 正在准备开源到GitHub。
https://github.com/duangsuse-valid-projects/Binarie 已经开源
这周可能不会继续开发下去了,那对我的精力来说有点勉强……
目前为止,Binarie 的 JS Reader/Writer 部分已经完成,可是 JVM 利用基础 BasicReader/BasicWriter(待写) 和BitConvert的部分待补完
应该说开发过程也是有点意外的,我开始的时候不知道自己打算用ES6的DataView和Int8Array (ArrayBufferView)来进行BasicReader实现,也没想到MarkReset在大部分子类会以oldPosition的形式被实现,略微有点不适应。
这周可能不会继续开发下去了,那对我的精力来说有点勉强……
目前为止,Binarie 的 JS Reader/Writer 部分已经完成,可是 JVM 利用基础 BasicReader/BasicWriter(待写) 和BitConvert的部分待补完
应该说开发过程也是有点意外的,我开始的时候不知道自己打算用ES6的DataView和Int8Array (ArrayBufferView)来进行BasicReader实现,也没想到MarkReset在大部分子类会以oldPosition的形式被实现,略微有点不适应。
GitHub
duangsuse-valid-projects/Binarie
🐠 Cute functional style binary structure IO library for Kotlin - duangsuse-valid-projects/Binarie
Forwarded from duangsuse Throws
duangsuse::Echo
🤔可悲不进步的 duangsuse 总是想弄一门自己的程序设计语言。 可不管他怎么写代码,连一个有函数和局部作用域的计算器都弄不出来。 于是他又准备设计一门…… 这个计算器是Lambda calculus的计算器。 所谓的Lambda演算就是说,词法作用域(Lexical scoping),不过我还给它加上了 Haskell 一样的 Currying。 Lambda 就是 \formals. body abstraction 不过 currying 的 lambda 只能有一个参数,\formals 需要foldRight才行。…
才发现原来那个 #PL 稿在这里啊…… 我还以为没抄到网上来呢
duangsuse::Echo
systemStack: 20 reports of: 12.580254ms, 529.422micros, ... min=129.954micros, max=12.580254ms, mean=824.48265micros, std=2.6990074188995345ms ascending: 129.954micros, 132.066micros, ... 25%=135.936micros, 50%(median)=154.33micros, 75%=217.637micros AdtStack:…
这是中缀链解析和 NumUnits 单位 format,当然这不稀奇……就是descending accumulator div+mod,我后来又写了一遍……
Lexical Scoping 我不用说吧,递归下降解析了解到
(lambda (a b) (+ a b)) 的 formals 里的 "a" "b" 与 body 里 (+ a b) 存在的1:1对应关系,就可以很自然地把他们联系起来了,之后怎么处理都好,例如像 Lua 一样把它们翻译为函数局部寄存器的编号,然后每次调用的时候给它们分配一对一的存储空间,caller调用侧和callee被调用侧都知道那个"a" "b"是指代哪片分配就好。
duangsuse::Echo
既然都这么弄了,还不如直接把优化写成代码算了……
虽然那个栈的中缀链貌似很高级,而且貌似递归下降的在很极端的情况下输出和 JS 不同,但我还是觉得应该选它,至少它看起来很简单,只 (base, op_left) 两个递归参数就够了,最重要的是它使用的栈是在语言层面受到支持的,而且这个支持本身实现的也很优雅很妥帖(要不然那语言还有用么……)。
duangsuse::Echo
看了某位大佬的 reley (一个类似 Haskell 编译到 Python VM Bytecode 的程序设计语言) 我觉得,其实 Java 和 Kotlin 的 package…… 都不利于代码的简洁性,我是好好想了一会的,其实未必没有办法引入『导出』文法,代价是,必须去掉包声明,不然不好看 ……还是留着吧,毕竟 Java 系的不是 Haskell 的风格 绝句还不是绝句Script 呢。 不过我觉得可以给「包」声明一个扩展: — 数域.jue 包 绝句.区间, 物,节域、短数域、数域、长数域、…
绝句开始的时候的「包」是这样的,和Kotlin一点的不像,可能是Kotlin要预备原谅了吧 😂
cat /usr/share/katepart/syntax/logohighlightstyle.en_GB.xml这好像有分词高亮的,我考虑一下是不是可以……
绝句有些软关键字(就是仍然可以直接作为名字的,一般它们都跟在其他关键字后面)
不过没关系,可以全都视作关键字看待
https://kate-editor.org/syntax/data/syntax/kotlin.xml
牛批啊,这么说我就照着Kotlin的样子不需要几秒钟能定义 syntax highlight? 🤪??
牛批啊,这么说我就照着Kotlin的样子不需要几秒钟能定义 syntax highlight? 🤪??
package import sealed data class enum interface companion object private public protected internal open final get set fun var val constructor inline reified crossinline tailrec in out is as by where vararg get set return throw typealias typeof override infix operator if else when for while do try catch finally continue break yield this super null true false Unit Nothing String Char Int Long Byte Short Float Double Boolean
包 为 其中 引 引全 成 除
定记法 引记法 属别名 类 物 例 况物 储物 例物 记物 内物 内联物 伴生例
私下 族内 公开 内部
开放 终定 覆写
抽象 实现
待例 实际
内联 晚成
算符 尾递归
许多 跨嵌 不嵌
记法
若 否则
判 判断 于
对 解对 里的
重复若 重复 若
尝试 接迎 成 终焉
真 入 出
属 不属 作 试作 存于 不存于
回 抛下 停下 略过 断续
造于 我 亲
空 真 假
效果 断止 文 字
真假 字节 短数 数 长数 短实数 实数
取者 置者 代者
事 量 解量 常 变 常参 变参
包 为 其中 引 引全 成 除
定记法 引记法 属别名 类 物 例 况物 储物 例物 记物 内物 内联物 伴生例
私下 族内 公开 内部
开放 终定 覆写
抽象 实现
待例 实际
内联 晚成
算符 尾递归
许多 跨嵌 不嵌
记法
若 否则
判 判断 于
对 解对 里的
重复若 重复 若
尝试 接迎 成 终焉
真 入 出
属 不属 作 试作 存于 不存于
回 抛下 停下 略过 断续
造于 我 亲
空 真 假
效果 断止 文 字
真假 字节 短数 数 长数 短实数 实数
取者 置者 代者
事 量 解量 常 变 常参 变参