是否可以在emacs-lisp中包装GNU Scientific Library功能?

时间:2014-11-30 14:04:56

标签: elisp ffi gsl

是否可以在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吗?

1 个答案:

答案 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-processstart-process用于运行矩阵运算的可执行程序,并通过stdinstdout与这些程序进行通信。< / p>