@
spritecn 每个语法的设计都有考量的,整体上语法是师从 typescript + rust 的。1. 在接口的定义和实现上抄了 rust 的 impl, 分离具体的实现类和接口之间的耦合,这样可以在任何位置实现,比如说 impl findstr for grep, impl grep for findstr ,不同平台命令可以相互实现。2. comptime 这个语法糖他是一个表达式,可以塞在任何地方,所以他和传统的宏还不太一样,他可以耍无赖的放在函数的参数里面,比如说 echo ( true, comptime { ... }) 至于这要做有什么用,就是后面 hulo 会开发的,hulo 的 comptime 可以操作 ast ,但是不同于传统的编程语言 只能操作包裹的子类节点,hulo 的 comptime 能够直接操作父类,也就是说 经过 comptime { ... } 的执行,外层的 echo 可能被替换成 Write-host ,之所以会这样设计 也是为了跨平台的考量。如果是 go, python 的语法糖压根达不到这样的水平。3. hulo 的命令是基础类型,可以对命令进行组合相互实现,例如 use grep = find & findstr 这样的,有点类似 ts 的类型体操,但是 hulo 的机制更加复杂,因为命令有不同的 options 还需要更细粒度的组合,因此 hulo 还参考了 css 的选择器,支持对命令进行更精细化的提取。总的来说,Hulo 的这些语法糖就是为了统一这些平台的语言设计的。