Syntax:
Funktionsnamn(argument1, argument2, ...)
Exempel:
Factorial(5) cos(2*pi) gcd(921,317)
För att evaluera en funktion, mata in funktionens namn följt av funktionens argument (om sådana finns) i parenteser. Detta kommer returnera resultatet av att tillämpa funktionen på dess argument. Antalet argument för funktionen skiljer sig förstås åt för varje funktion.
Det finns många inbyggda funktioner, som sin, cos och tan. Du kan använda det inbyggda kommandot help för att få en lista över tillgängliga funktioner, eller se Chapter 11, Lista över GEL-funktioner för en fullständig lista.
Du kan använda tabbkomplettering för att få Genius att komplettera funktionsnamn åt dig. Skriv in de första bokstäverna i namnet och tryck Tabb.
Namnen på funktioner är skiftlägeskänsliga. Detta betyder att funktionerna med namnen arbeta, ARBETA och Arbeta alla är olika funktioner.
Syntax:
function <identifierare>(<kommaseparerade argument>) = <funktionskropp> <identifierare> = (`() = <funktionskropp>)
` är tecknet grav accent och betecknar en anonym funktion. Genom att sätta den till ett variabelnamn definierar du praktiskt sett en funktion.
En funktion tar noll eller fler kommaseparerade argument och returnerar resultatet av funktionskroppen. Att definiera dina egna funktioner är främst en bekvämlighetsfråga; en möjlig användning är att ha uppsättningar av funktioner definierade i GEL-filer som Genius kan läsa in för att göra dem tillgängliga. Exempel:
function addup(a,b,c) = a+b+c
och sedan addup(1,4,9) ger 14
Om du inkluderar ... efter det sista argumentnamnet i funktionsdeklarationen kommer Genius att tillåta ett godtyckligt antal argument att skickas i stället för det argumentet. Om inga skickades så kommer det argumentet att ställas in till null. I andra fall kommer det vara en horisontell vektor som innehåller alla argumenten. Till exempel:
function f(a,b...) = b
Då kommer f(1,2,3) att ge [2,3], medan f(1) ger ett null.
I Genius är det möjligt att skicka en funktion som ett argument till en annan funktion. Detta kan antingen göras med ”funktionsnoder” eller anonyma funktioner.
Om du inte matar in parenteserna efter ett funktionsnamn så kommer funktionen i stället för att evalueras returneras som en ”funktionsnod”. Funktionsnoden kan sedan skickas till en annan funktion. Exempel:
function f(a,b) = a(b)+1; function b(x) = x*x; f(b,2)
För att skicka funktioner som inte är definierade kan du använda en anonym funktion (se the section called “Definiera funktioner”). Det vill säga att du vill skicka en funktion utan att ge den ett namn. Syntax:
function(<kommaseparerade argument>) = <funktionskropp> `(<kommaseparerade argument>) = <funktionskropp>
Exempel:
function f(a,b) = a(b)+1; f(`(x) = x*x,2)
Detta kommer returnera 5.
Vissa funktioner tillåter aritmetiska operationer, och vissa funktioner med ett argument som exp eller ln att operera på funktionen. Till exempel returnerar
exp(sin*cos+4)
en funktion som tar x och returnerar exp(sin(x)*cos(x)+4). Det är funktionellt sett ekvivalent med att skriva
`(x) = exp(sin(x)*cos(x)+4)
Denna operation kan vara användbar då man definierar funktioner snabbt. För att till exempel skapa en funktion som kallas f för att utföra operationen ovan kan du helt enkelt skriva:
f = exp(sin*cos+4)
Det kan också användas i grafritning. För att till exempel rita grafen för sinus i kvadrat kan du mata in:
LinePlot(sin^2)
Alla funktioner kan inte användas på detta sätt. Då du till exempel använder en binär operation måste funktionerna ta samma antal argument.