是否可以在emacs-lisp中包装外部函数?我有兴趣从GNU科学图书馆做这样的事情:
(let ((A '((0.18 0.60 0.57 0.96)
(0.41 0.24 0.99 0.58)
(0.14 0.30 0.97 0.66)
(0.51 0.13 0.19 0.85)))
(b '(1 2 3 4)))
(gsl-linalg-LU-solve A b))
退货(-4.05205 -12.6056 1.66091 8.69377)
如果无法做到这一点,还有其他方法可以将数值方法转换为emacs-lisp吗?
答案 0 :(得分:0)
AFAIK,无法链接emacs不直接支持的任何二进制库。前段时间我在某处读到这是emacs的预期行为,以避免意外崩溃。我不知道这个陈述的确切来源了。 (其他人的帮助被认可。)
变量dynamic-library-alist
的帮助暗示了它:
动态库与实现它们的外部文件的对应关系。 ... 另请注意,这不是访问外部的通用工具 库;只会加载Emacs已知的那些。
然而,calc包提供了数值算法。见,例如, https://www.gnu.org/software/emacs/manual/html_node/calc/Vector-and-Matrix-Arithmetic.html 用于LU分解。
可能的出路是将call-process
或start-process
用于运行矩阵运算的可执行程序,并通过stdin
和stdout
与这些程序进行通信。< / p>