Tweet中的完整RPN Expr Eval程序?--&引用;是的,我们可以&引用;,使用LISP

Tweet中的完整RPN Expr Eval程序?--&引用;是的,我们可以&引用;,使用LISP,lisp,eval,common-lisp,rpn,Lisp,Eval,Common Lisp,Rpn,程序(115个字符) 一个简单的测试: CL-USER> (rpn '(1 2 3 * + 4 2 / +)) 然后返回9 有人对在一条推文中编写一个中缀到RPN程序有什么好主意吗?我失败了。我可以用235个字符写一个。这里有一个用Clojure(88个字符)写的: 和非高尔夫版本: (defn rpn [& expr] (reduce (fn [stack op] (if (fn? op) (let [[l r &

程序(115个字符)

一个简单的测试:

CL-USER> (rpn '(1 2 3 * + 4 2 / +))
然后返回
9

有人对在一条推文中编写一个中缀到RPN程序有什么好主意吗?我失败了。我可以用235个字符写一个。

这里有一个用Clojure(88个字符)写的:

和非高尔夫版本:

(defn rpn [& expr]
  (reduce (fn [stack op]
            (if (fn? op)
              (let [[l r & m] stack]
                (cons (op r l) m))
              (cons op stack)))
          []
          expr))

如果把这个问题改成“能不能…?”然后把程序放在一个答案里,我会更高兴。现在,这不是一个真正的问题。除非它遵循
(defn rpn [& e](reduce #(if (fn? %2)(let [[l r & m]%](cons (%2 r l) m))(cons %2 %))[]e))
(defn rpn [& expr]
  (reduce (fn [stack op]
            (if (fn? op)
              (let [[l r & m] stack]
                (cons (op r l) m))
              (cons op stack)))
          []
          expr))