如何避免千里马中的名称冲突

时间:2014-10-05 08:26:49

标签: maxima

我通过阅读Maxima手册学习。

Maxima有许多内置函数和全局变量。 我担心覆盖已经存在的同名函数或变量的可能性。

有没有一种方便的方法来避免Maxima中的名称冲突?

2 个答案:

答案 0 :(得分:1)

如果你在谈论命名空间, - 不,我从来没有听说过Maxima中的命名空间。

  • 解决问题的最简单方法是为用户定义的变量和函数编写前缀

  • 另一个选项是通过describe(FUNCTIONNAME)检查function \ variable是否已存在。如果它打印文本,则函数是预定义的=)

代码示例:

a:1;
b:2;
map:3;
map(describe, values);

(%o25) 1
(%o26) 2
(%o27) 3
No exact match found for topic a.
  Try ?? a (inexact match) instead.
  No exact match found for topic b.
  Try ?? b (inexact match) instead.
 Function: map (<f>, <expr_1>, ..., <expr_n>)
     Returns an expression whose leading operator is the same as that
     ....
     ....
  There are also some inexact matches for map.
  Try ?? map to see them.
(%o28) [false,false,true]

答案 1 :(得分:1)

Robert Dodier

有一个实验包

http://sourceforge.net/p/maxima/code/ci/master/tree/share/contrib/namespaces

(%i1) load("namespaces")$
(%i2) in_namespace(foo);
(%o2)                          #<PACKAGE "$FOO">
(%i3) z: 42;
(%o3)                                 42
(%i4) in_namespace(maxima)$

(%i5) z;
(%o5)                                  z
(%i6) foo|z;
(%o6)                                 42