常见的lisp:输入数学表达式有一种不那么痛苦的方法吗?

h__*_*h__ 6 common-lisp infix-notation prefix s-expression reader-macro

我喜欢常见的口齿不清,但有时输入简单的数学表达式是非常痛苦的

a(8b^2+1)+4bc(4b^2+1)
Run Code Online (Sandbox Code Playgroud)

(当然我可以转换它,但它有点慢,我先写(+()()),然后在每个括号中我放(*()())...)

我想知道这里是否有人知道更好的输入方法.我正在考虑编写一个数学宏,在哪里

(math “a(8b^2+1)+4bc(4b^2+1)”) 
Run Code Online (Sandbox Code Playgroud)

扩展到

(+ (* a (1+ (* 8 b b))) (* 4 b c (1+ (* 4 b b))))
Run Code Online (Sandbox Code Playgroud)

但解析是名称很长的变量的问题.

有人有更好的建议吗?

Rai*_*wig 25

为此目的有读者宏.

见:http: //www.cliki.net/infix

例如:

CL-USER 17 > '#I(a*(8*b^^2+1)+ 4*b*c*(4*b^^2+1) )
(+ (* A (+ (* 8 (EXPT B 2)) 1)) (* 4 B C (+ (* 4 (EXPT B 2)) 1)))
Run Code Online (Sandbox Code Playgroud)

'通常是引用.#I( some-infix-expression )是读者宏.

  • 它是一个读者宏,在`infix`库中定义. (7认同)