制作和加载库的推荐方法是什么?

What is the recommended way to make & load a library?

我想制作一个小的 "library" 供我未来的 maxima 脚本使用,但我不太确定如何进行(我使用 wxMaxima)。 Maxima 的文档涵盖了 save()load()loadFile() 函数,但未提供示例。因此,我不确定我是否使用 proper/best 方式。我当前的解决方案基于 this post,以 *.lisp 格式存储我的库。

举个简单的例子,假设我的库定义了 cosSin(x) 函数。我打开一个新会话并将此函数定义为

(%i0) cosSin(x) := cos(x) * sin(x);

然后我将它保存到位于 /tmp/ 目录中的 lisp 文件中。

(%i1) save("/tmp/lib.lisp");

然后我打开一个新的 maxima 实例并加载库

(%i0) loadfile("/tmp/lib.lisp");

现在定义了cosSin(x),可以调用

(%i1) cosSin(%pi/4)

(%o1) 1/2

但是,我注意到 maxima 附带的大量库都是 *.mac 格式:/usr/share/maxima/5.37.2/share/ 目录包含 428 个 *.mac 文件和 516 * .lisp 文件。这是更好的格式吗?我将如何生成此类文件?

更一般地说,保存和加载库的不同方式有哪些?推荐的方法是什么?

通常人们将他们需要的函数放在文件名中 something.mac 然后 load("something.mac"); 将函数加载到 Maxima 中。

一个文件可以包含任意数量的函数。一个文件可以加载其他文件,所以如果你有 somethingA.macsomethingB.mac,那么你可以有另一个文件只写 load("somethingA.mac"); load("somethingB.mac");.

也可以创建 Lisp 文件并加载它们,但不需要在 Lisp 中编写函数。

除非您对编写 Lisp 函数特别感兴趣,否则我的建议是使用 Maxima 语言编写您的函数并将它们放在一个文件中,使用普通的文本编辑器。此外,我建议您不要使用 save 将函数作为 Lisp 代码保存到文件中;只需使用纯文本编辑器将函数作为 Maxima 代码键入文件即可。

查看 share 中的文件,了解其他人是如何处理它的。我现在正在查看 share/contrib/ggf.mac,我看到它有一个冗长的评论 header 描述了它的目的——这样的评论总是一个好主意。

对于像我这样的校长,

  1. 菜单Edit:configure:Startup命令
  2. 复制您在第一个框中验证的所有功能(这将在下面指示的位置写入您的 wxmaxima-init.mac)
  3. 重新启动 Wxmaxima。

现在您无需任何 load() 命令即可访问这些函数