问题

软件 >> Magma
Questions in category: Magma (Magma).

[Magma]函数的定义

Posted by haifeng on 2011-08-13 14:50:55 last update 2021-03-14 18:49:59 | Answers (0) | 收藏


Magma 中函数的定义有两种句法:

  • f := function(x1,...,xn: parameters)
        statements
    end function;
    
  • function f(x1,...,xn: parameters)
        statements
    end function;
    

函数体中至少有一句应是 return 语句, 可以返回多个值, 形如

return expression,...,expression;

当在 if ... then ... else 结构中, 如果要返回无定义的值, 则可使用下划线 _ , 这可以使得函数体的所有分支的返回值数目都是一样的.


参数的给定

参数的给定必须是逗号分隔的列表形式, 形如:

identifier1 := value, identifier2 := value, identifier3 := value

两者的区别

这两种定义方式的唯一区别在于递归调用时, 第一种形式的函数 f 不能在其定义体中调用 f 自己, 必须使用 $$ 来指代 f 自身. 而第二种形式的函数可以在定义体中调用函数自身.

例子: 生成 Fibonacci 数列


可变参数的函数定义方式

  • f := function(x1,...,xn,... : parameters)
        statements
    end function;
    
  • function f(x1,...,xn,... : parameters)
        statements
    end function;
    

这种函数在调用时可以传递多于 n 个参数. 形如: $f(y_1,...,y_m)$, $m\geqslant n$.

  • 对于 $i < n $, 实参 $y_i$ 被绑定到虚参 $x_i$ 上;
  • 对于 $i\geqslant n$, $y_i$ 被绑定到 $x_n$ 作为一个列表 $[*y_n,\ldots,y_m*]$.

 


简写方式

当函数体非常简单, 可以用一个表达式来定义时可以使用下面的简写方式来定义.

  • f := func < x1,...,xn : parameters | expression >;
    
  • f := func < x1,...,xn, ... : parameters | expression >;