elisp是否支持虚数?我正在尝试使用lisp交互模式缓冲区运行来跟踪在线数学课程。是否有更高的数学" Emacs elisp的模块/库?
答案 0 :(得分:3)
Emacs包含calc
,一个支持复数的综合计算器。
手册在这里:
C-h i g (calc)
RET
特别注意的其他节点是:
(calc) Complex Numbers
(calc) Complex Number Functions
(calc) Calling Calc from Your Programs
答案 1 :(得分:0)
我刚刚找到一个调用Calc的好例子:Mastering Emacs; Fun with Emacs Calc它讨论了使用calc-eval函数在elisp代码中嵌入Calc:
ELISP> (calc-eval "1+2")
"3"
它给出了一个在elisp代码中使用calc-eval调用Calc的示例。
答案 2 :(得分:0)
Unfornutabilly emacs lisp没有本机复数。它仅具有手册enter link description here中所述:
Integer Basics: Representation and range of integers.
Float Basics: Representation and range of floating point.
此外,您不能重叠基本的数学函数来使用其他类型的数字,请参见this discussion
不幸的是,您实际上无法建议已经 分配的字节码操作码。这包括*和大多数其他数学 操作员。您的建议不会针对已执行的任何功能触发 字节编译。几年前,这让我感到惊讶:The Limits of Emacs
因此添加这种担忧并不容易,幸运的是emacs lisp是lisp的后代,因此您可以有其他许多解决方案。
有一个package可以使用复数:
“ cplx”包将复数表示为一对 缺点。
并且还添加了与emacs lisp数字交互的数字的基本操作。
此外,正如@phils答案中指出的那样,emacs内部还存在calc,它被描述为基于HP-S28的高级桌面计算器,它也是用Elisp编写的代数系统,您可以扩展easilly,并支持所有数字类型,您可以使用calc或在emacs lisp程序中使用它
以字符串表示形式
ELISP> (calc-eval "1 + 2i + 3")
"2 i + 4"
ELISP> (calc-eval "1 + 2i * 3")
"6 i + 1"
或直接使用数据类型
ELISP> (calcFunc-add 3 '(float 5 0) '(cplx 4 5))
(cplx
(float 12 0)
5)
请仔细阅读emacs lisp calc manual,并查看一些谈论该主题的博客,例如this one
答案 3 :(得分:0)
迟到的回复,但是,除了 calc 之外,还有面向数学的支持: