制作和加载库的推荐方法是什么?
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.mac
和 somethingB.mac
,那么你可以有另一个文件只写 load("somethingA.mac"); load("somethingB.mac");
.
也可以创建 Lisp 文件并加载它们,但不需要在 Lisp 中编写函数。
除非您对编写 Lisp 函数特别感兴趣,否则我的建议是使用 Maxima 语言编写您的函数并将它们放在一个文件中,使用普通的文本编辑器。此外,我建议您不要使用 save
将函数作为 Lisp 代码保存到文件中;只需使用纯文本编辑器将函数作为 Maxima 代码键入文件即可。
查看 share
中的文件,了解其他人是如何处理它的。我现在正在查看 share/contrib/ggf.mac
,我看到它有一个冗长的评论 header 描述了它的目的——这样的评论总是一个好主意。
对于像我这样的校长,
- 菜单Edit:configure:Startup命令
- 复制您在第一个框中验证的所有功能(这将在下面指示的位置写入您的 wxmaxima-init.mac)
- 重新启动 Wxmaxima。
现在您无需任何 load() 命令即可访问这些函数
我想制作一个小的 "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.mac
和 somethingB.mac
,那么你可以有另一个文件只写 load("somethingA.mac"); load("somethingB.mac");
.
也可以创建 Lisp 文件并加载它们,但不需要在 Lisp 中编写函数。
除非您对编写 Lisp 函数特别感兴趣,否则我的建议是使用 Maxima 语言编写您的函数并将它们放在一个文件中,使用普通的文本编辑器。此外,我建议您不要使用 save
将函数作为 Lisp 代码保存到文件中;只需使用纯文本编辑器将函数作为 Maxima 代码键入文件即可。
查看 share
中的文件,了解其他人是如何处理它的。我现在正在查看 share/contrib/ggf.mac
,我看到它有一个冗长的评论 header 描述了它的目的——这样的评论总是一个好主意。
对于像我这样的校长,
- 菜单Edit:configure:Startup命令
- 复制您在第一个框中验证的所有功能(这将在下面指示的位置写入您的 wxmaxima-init.mac)
- 重新启动 Wxmaxima。
现在您无需任何 load() 命令即可访问这些函数