岩浆中的内在定义
Intrinsic definition in magma
我已经使用 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
我真的不明白我做错了什么,谁能开导我?
好的,经过更多阅读结束实验,我不需要在附加 f.m
后导入 c
。
内在函数会自动加载。这是与必须显式导入的包文件中定义的函数和变量的重要区别。由于这给我带来了一些麻烦,我还是会把这个问题和解决方案一起上传。
一张图片胜过一千个字,要完成这项工作,只需在控制台中输入以下内容:
> Attach("f.m");
> import "f.m": a,b;
> a;
1
> b(1);
2
> c(1);
2
或者换句话说,如果您不需要函数或变量,就不要导入任何东西。
我已经使用 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
我真的不明白我做错了什么,谁能开导我?
好的,经过更多阅读结束实验,我不需要在附加 f.m
后导入 c
。
内在函数会自动加载。这是与必须显式导入的包文件中定义的函数和变量的重要区别。由于这给我带来了一些麻烦,我还是会把这个问题和解决方案一起上传。
一张图片胜过一千个字,要完成这项工作,只需在控制台中输入以下内容:
> Attach("f.m");
> import "f.m": a,b;
> a;
1
> b(1);
2
> c(1);
2
或者换句话说,如果您不需要函数或变量,就不要导入任何东西。