yuyan
yuyan copied to clipboard
关于文言文文法
很棒的尝试,完成度也很高。 带类型声明好评。
但是文法上感觉还是更加偏向于“函数式”而非“中文”…… 快速排序那一段似乎可读性有点低。不知道能否过目“入语言”,看看能否得到一些启发?
https://github.com/ProjectDimlight/RuCalculus/blob/main/samples/%E5%BF%AB%E6%8E%92.%E5%85%A5
入语言在设计时选择了加入大量语法糖,但是我个人不确定是否真的是它的优点。
你的这个很厉害!Impressive Work!
看到这个项目能够激励新的项目也是挺开心的。
这个项目刚开始时也是基于入演算和一个基础的类型系统,现在正在往ML类型系统方向发展。个人薄见来看,lambda演算本身在构建大型程序方面会有三个不得不解决的问题,一是很难用lambda表达数据结构:lambda演算里一切皆函数,boolean是数据,在以后的pattern match会遇到很多困难。二是类型检查,大型程序离不开类型系统,如果设计像python/js那样在lambda演算中用动态类型,感觉也不太对。三是对于effect的处理,比如IO,在数据即函数的假设下,对于数据的观察可能会产生IO,这方面可能精心设计一下。
本项目最初(前100commit)也是使用lambda演算和一个非常基础的类型系统(Recursive Types+Product+Sum),但后来发现这些问题不得不解决时,还是开始转变使用类似ML的类型系统。
本项目最终应该也会加入大量的类似语法糖的东西来增加可读性,以及更便于编写,目前仍处于设计的初期阶段。我的想法是要设计一套用户可定义的语法糖,在当前的mixfix操作符基础上,加入更高级的比如自定义括号,列表等功能的支持,但还是有很长的路要走。
Lean 4的语法糖设计很值得本项目借鉴。
Link: https://github.com/arthurpaulino/lean4-metaprogramming-book