Home Online Manual
Back: Procedure definition
Forward: Help string
FastBack: Input and output
FastForward: Libraries
Up: Procedures
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

3.7.2 Parameter list

( )
( parameter_definition )
  • Defines the number, type and names of the arguments of a procedure.
  • The parameter_list is optional.
  • Adding list # as argument to a parameter list means to allow optional parameters. Furthermore, (list #) is the default for a parameter list (in case no list is explicitly given). Inside the procedure body, the arguments of list # are referenced by #[1], #[2], etc.
  • If a procedure has optional parameters, the attribute default_arg gives the default values for the optional arguments. This provides in particular the possibility to also change the behaviour of all procedures nested inside the given procedure.

proc x0
    // can be called with
... // any number of arguments of any type: #[1], #[2],...
    // number of arguments: size(#)

proc x1 ()
... // can only be called without arguments

proc x2 (ideal i, int j)
... // can only be called with 2 arguments,
    // which can be converted to ideal resp. int

proc x3 (i,j)
... // can only be called with 2 arguments
    // of any type
    // (i,j) is the same as (def i,def j)

proc x5 (i,list #)
... // can only be called with at least 1 argument
    // number of arguments: size(#)+1

x5(2); // is equivalent to

The parameter_list may stretch across multiple lines.
A parameter may have any type (including the types proc and ring).
If a parameter is of type ring, then it can only be specified by name, but not with a type. For instance:
proc x6 (r)
... // this is correct, r may be of any type, even of type ring

proc x7 (ring r)
... // this is NOT CORRECT