Wolfram mathematica Mathematica软件包入门

Wolfram mathematica Mathematica软件包入门,wolfram-mathematica,mathematical-packages,Wolfram Mathematica,Mathematical Packages,有人能就如何开始使用mathematica软件包提供一些建议吗 我可以将以下内容保存在名为“Foo.m”的文件中。在该文件中运行输入单元格时,可以看到$ContextPath变量中反映的效果 BeginPackage["Foo`"] bar::usage = "barfunction"; Begin["`private`"] bar[w_] := w; End[]; EndPackage[]; 但是,在我的笔记本中,我有以下内容: #include<foo> SetDirec

有人能就如何开始使用mathematica软件包提供一些建议吗

我可以将以下内容保存在名为“Foo.m”的文件中。在该文件中运行输入单元格时,可以看到$ContextPath变量中反映的效果

BeginPackage["Foo`"]

bar::usage = "barfunction";

Begin["`private`"]
bar[w_] := w;
End[];

EndPackage[];
但是,在我的笔记本中,我有以下内容:

#include<foo>
SetDirectory[ToFileName[{$HomeDirectory, "My Documents", "mathematica"}]];
Needs["Foo`"]
$ContextPath
FindFile["Foo`"]
SetDirectory[<Foo dir>]
FindFile["Foo`"]
#包括
SetDirectory[ToFileName[{$homeditory,“我的文档”,“mathematica”}];
需要[“Foo`]
$ContextPath
但是由于某种原因,需求调用失败了,$ContextPath保持不变

编辑


我相信我现在已经找到了一个部分解决方案,我文件中的单元格没有标记为初始化单元格-虽然我现在可以检查以确保保存的文件“Foo.m”位于您的
$Path
,它告诉Mathematica在尝试加载包时要查看哪些目录,很像Unix或Windows中的
PATH
环境变量

编辑:
$ContextPath
不会被更改,除非有一个实际的
BeginPackage
语句(或者您直接使用
Set
Block
或其他操作)

编辑第二条:要检查的一件事是什么

FileNames["Foo.m", $Path]

返回。不过,您所描述的内容听起来确实有点奇怪。

两种形式都可以。当使用
Get
(或
Pilly)加载文件时,仅假设该文件位于当前工作目录(我相信是由SetDirectory设置的)中,并且“.”位于$Path中,则应该找到该文件就足够了吗?
$Failed
<Foo dir>
<Foo dir>/foo.m