优秀的程序语言是不用括号和空格的

我就举个简单的例子

问曰一加二
答曰三
问曰一加二加三
答曰六
问曰一二三相加
答曰六
问曰一二三项数
答曰三
问曰六除以三
答曰二
问曰一二三相加除以项数
答曰二

很多人在纠结代码是否可读。然而同样的代码用类C语言写,会长啥样?而且这样可以一步步展开,而不是一上来就看一长串不知所云的代码,自己猜是干啥的。更别提这样写代码真的是可以大声读出来的。

还有很多人在纠结是否会产生歧义。现有的语言真的没有歧义了?C++的函数重载不一样可能会产生歧义。这里可是把type inference也放到parser里,反正出现歧义一样不让过就是了。

把一二三这样的literal也看成函数,于是literal也不需要什么特殊规则。

F: fun(X) -> Y G: fun(X) ->Y H: fun(X) -> Y

(F G H) : fun(X) -> array(Y)

于是 一二三就是 fun(any) -> array(num)

F: fun(X) -> Y G: fun(Y) -> Z

(F G) : fun(X) -> Z

于是 一二三相加除以项数就是 fun(any) -> num

F: fun(X) -> A G: fun(A,B)->Z H: fun(X) -> B

(F G H): fun(X) -> Z

于是相加除以项数就是 fun(array(num)) -> num

有了这样的组合规则,在parsing的时候顺便把type inference的活干了,就不需要括号和空格了。

编辑于 2018-01-24