[Top] [Up] [Previous] [Next] [Index]

5 Functions

Sections

  1. Information about a function
  2. Calling a function with a list argument that is interpreted as several arguments
  3. Functions that do nothing
  4. Function Types

The section Function describes how to define a function. In this chapter we describe functions that give information about functions, and various utility functions used either when defining functions or calling functions.

5.1 Information about a function

  • NameFunction( func ) F

    returns the name of a function. For operations, this is the name used in their declaration. For functions, this is the variable name they were first assigned to. (For some internal functions, this might be a name different from the name that is documented.) If no such name exists, "unknown" is returned.

    gap> NameFunction(SylowSubgroup);
    "SylowSubgroup"
    gap> Blubberflutsch:=x->x;;
    gap> NameFunction(Blubberflutsch);
    "Blubberflutsch"
    gap> a:=Blubberflutsch;;
    gap> NameFunction(a);
    "Blubberflutsch"
    gap> NameFunction(x->x);
    "unknown"
    gap> NameFunction(NameFunction);
    "NAME_FUNC"
    

  • NumberArgumentsFunction( func ) F

    returns the number of arguments the function func accepts. For functions that use arg to take a variable number of arguments, as well as for operations, -1 is returned. For attributes, 1 is returned.

    gap> NumberArgumentsFunction(function(a,b,c,d,e,f,g,h,i,j,k)return 1;end);
    11
    gap> NumberArgumentsFunction(Size);
    1
    gap> NumberArgumentsFunction(IsCollsCollsElms);
    3
    gap> NumberArgumentsFunction(Sum);
    -1
    

    5.2 Calling a function with a list argument that is interpreted as several arguments

  • CallFuncList( func, args ) F

    returns the result, when calling function func with the arguments given in the list args, i.e. args is ``unwrapped'' so that args appears as several arguments to func.

    gap> CallFuncList(\+, [6, 7]);
    13
    gap> #is equivalent to:
    gap> \+(6, 7);
    13
    

    A more useful application of CallFuncList is for a function g that is called in the body of a function f with (a sublist of) the arguments of f, where f has been defined with a single formal argument arg (see function); see the following code fragment.

    f := function ( arg )
           CallFuncList(g, arg);
           ...
         end;
    

    In the body of f the several arguments passed to f become a list arg. If g were called instead via g( arg ) then g would see a single list argument, so that g would, in general, have to ``unwrap'' the passed list. The following (not particularly useful) example demonstrates both described possibilities for the call to g.

    gap> PrintNumberFromDigits := function ( arg )
    >     CallFuncList( Print, arg );
    >     Print( "\n" );
    >    end;
    function( arg ) ... end
    gap> PrintNumberFromDigits( 1, 9, 7, 3, 2 );
    19732
    gap> PrintDigits := function ( arg )
    >     Print( arg );
    >     Print( "\n" );
    >    end;
    function( arg ) ... end
    gap> PrintDigits( 1, 9, 7, 3, 2 );
    [ 1, 9, 7, 3, 2 ]
    

    5.3 Functions that do nothing

    The following functions return fixed results (or just their own argument). They can be useful in places when the syntax requires a function, but actually no functionality is required. So ReturnTrue is often used as family predicate in InstallMethod (see InstallMethod in ``Programming in GAP'').

  • ReturnTrue( ... ) F

    This function takes any number of arguments, and always returns true.

  • ReturnFalse( ... ) F

    This function takes any number of arguments, and always returns false.

  • ReturnFail( ... ) F

    This function takes any number of arguments, and always returns fail.

  • IdFunc( obj ) F

    returns obj.

    5.4 Function Types

    Functions are GAP objects and thus have categories and a family.

  • IsFunction( obj ) C

    is the category of functions.

  • IsOperation( obj ) C

    is the category of operations. Every operation is a function, but not vice versa.

  • FunctionsFamily V

    is the family of all functions.

    [Top] [Up] [Previous] [Next] [Index]

    GAP 4 manual
    May 2002