其实我认为syntax的主要难题在于“如何优雅地用线性的文本表示嵌套的树形expr”
最暴力,最灵活的,自然是sexp,但会产生括号海
Haskell和perl依赖于binary operator,在很多时候这是最好看的,但我觉得operator一多,优先级不能一眼看出来就会形成累赘。而且一味追求没有括号也不是件好事
ML家族是一个相对折中的方案,大量使用let和application两级结构来减少嵌套深度,当你觉得某个expression括号太多/太深时,把其中一部分lift出来变成一个local variable就能有效减少嵌套深度。但是let的限制还是太多了,最近OCaml加了let operator体验极大提升(吹爆
最后,我觉得C,Java,python等一票的方案也很不错:它们根本不允许或极力阻止程序员写出嵌套的东西,从源头上解决了问题(逃