比如lisp是前缀表达:(drink raven water)
大多数oo的中缀,如raven.drink(water)
那么,有没有 (raven water drink) 这一类的呢?
如果有,有什么优缺点?
如果没有,是由于什么缺陷呢?
比如lisp是前缀表达:(drink raven water)
大多数oo的中缀,如raven.drink(water)
那么,有没有 (raven water drink) 这一类的呢?
如果有,有什么优缺点?
如果没有,是由于什么缺陷呢?
突然想起来emacs里面的calc,然后就想到了stack。
参考一下吧。
后缀语言通常被称为 CPL (Concatenative programming language) 或者 Stack-based programming language。目前比较流行的是 Factor。
这类语言第一眼看上去很像 JVM 里的 byte code。由于需要显式操作 stack,你可能会认为,它们在实践中难以使用。But that is not true …
事实上,CPL 更像某些数据流 DSL,比如: Haskell Arrow 或 Racket Qi。程序员在真正写程序的时候,不怎么关心 stack,他们关注 function composition,即:point-free。
一些有趣 trade-off:
PLs like Racket or Haskell are not point-free, but they provide some libraries to write point-free.
PLs like Factor or Cat are point-free, but they typically provide some extensions to introduce local variables.
推荐一篇博客:http://evincarofautumn.blogspot.com/2012/02/why-concatenative-programming-matters.html