0

我已经使用Magma几个星期了,一切都很好,除了一件事:我无法定义自己的内在函数。我没有找到很多学习语言的资源(也许我无法搜索......),所以我尝试了很多东西,现在,我陷入了一个看似简单的事情:我有一个f.m文件包含以下代码:

freeze;

a := 1;

function b(n);
  return n+1;
end function;

intrinsic c(n::RngIntElt) -> RngIntElt
{meh}
  return n+1;
end intrinsic;

在 Magma 控制台中,在与此文件相同的文件夹中,我有以下内容:

> Attach("f.m");
> import "f.m": a,b,c;
> a; 
1
> b(1);
2
> c(1);

>> c(1);
   ^
Runtime error: Symbol 'c' of package "f1.m" not found

我真的不明白我做错了什么,有人可以启发我吗?

4

1 回答 1

0

好的,经过一些阅读结束实验后,我不需要c在附加后导入f.m. 内部函数会自动加载。这是与必须显式导入的包文件中定义的函数和变量的重要区别。由于这给我带来了一些麻烦,我仍然会在解决方案中上传这个问题。

一张图片值一千字,要完成这项工作,只需在控制台中输入以下内容:

> Attach("f.m");
> import "f.m": a,b;
> a; 
1
> b(1);
2
> c(1);
2

或者换句话说,如果你不需要函数或变量,就不要导入任何东西。

于 2020-12-16T14:10:40.573 回答