【发布时间】:2011-12-29 00:02:39
【问题描述】:
(Mathematica 版本:8.0.4)
lst = Names["Internal`*"];
Length[lst]
Pick[lst, StringMatchQ[lst, "*Bag*"]]
给予
293
{"Internal`Bag", "Internal`BagLength", "Internal`BagPart", "Internal`StuffBag"}
The Mathematica guidebook for Programming By Michael Trott,第 494 页关于内部上下文的说明
“但与 Experimental 上下文类似,不保证函数的行为和语法在以后的 Mathematica 版本中仍然可用”
另外,这里提到了Bag 函数:
Implementing a Quadtree in Mathematica
但是由于我在这里看到许多 Mathematica 专家建议 Internal`Bag 函数并自己使用它们,我假设在实际代码中使用它们会是安全的吗?如果是这样,我有以下问题:
我在哪里可以找到这些功能(API 等)的更官方描述,就像在文档中心找到的那样?现在没有关于它们的任何信息
??Internal`Bag
Internal`Bag
Attributes[Internal`Bag]={Protected}
如果我要开始使用它们,我发现仅通过查看一些示例和反复试验来了解它们的作用很难了解新功能。我想知道这里是否有人可能有一个更完整和自包含的文档来说明这些的使用,描述 API 等等,而不是已经存在的内容或指向这些地方的链接。
【问题讨论】:
-
??官方描述是所谓的“文档中心”(又名帮助)。如果那里什么都没有,那么就没有其他结构化的地方。它以前发生过:前端令牌是在 Mathematica 3 中引入的,但只是(部分)在很久以后才记录下来。所以,等十年左右,世界资源研究所可能会记录下来。在此之前,您必须依赖像 Dan Lichtblau 等善良的开发人员。人。照亮黑暗。
-
我一直在推荐未记录的功能而没有提出使用警告。很难不为我学习并立即开始使用它的最新“技巧”感到兴奋,但这可能是不明智的,我不应该鼓励其他人遵循这种做法。可悲的是,许多有趣的特性和功能都属于这一类。我希望很快会有像
*Bag*这样的功能的官方消息。 -
我怀疑是否会有任何关于这些的官方消息。但它们至少已经存在了十几年,而且不会消失。
-
我怀疑你会找到任何关于
Internal`函数的官方文档,但搜索 MathGroup 总能找到一些有趣的帖子。另外,请注意这些...例如,Internal`Deflatten很容易弄清楚,但是如果您给它提供错误的参数,它也会很高兴地使您的内核崩溃。 -
我想你会对这个问题感兴趣:What are some useful, undocumented Mathematica functions? 我们可以在那里编写/收集一些有用的未记录功能的文档。 MathGroup 和这里的不同地方都提到了许多未记录的功能,但是有一个有组织的集合会很好。另请参阅我对主要问题的评论。