有没有哪种语言的函数采用的是后缀表达式形式的?

比如lisp是前缀表达:(drink raven water)

大多数oo的中缀,如raven.drink(water)

那么,有没有 (raven water drink) 这一类的呢?

如果有,有什么优缺点?

如果没有,是由于什么缺陷呢?

forth 系

http://thinking-forth.sourceforge.net/

https://andreaferretti.github.io/factor-tutorial/

1 个赞

突然想起来emacs里面的calc,然后就想到了stack。

参考一下吧。

后缀语言通常被称为 CPL (Concatenative programming language) 或者 Stack-based programming language。目前比较流行的是 Factor

这类语言第一眼看上去很像 JVM 里的 byte code。由于需要显式操作 stack,你可能会认为,它们在实践中难以使用。But that is not true …

事实上,CPL 更像某些数据流 DSL,比如: Haskell ArrowRacket 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

7 个赞