Toppnivåsyntax

Syntaxen skiljer sig något beroende på om du matar in satser på toppnivån gentemot då de används inom parenteser eller i funktioner. På toppnivån uppför sig retur just som om du tryckte retur på kommandoraden. Tänk därför på program som bara en följd av rader som matats in på kommandoraden. I synnerhet behöver du inte ange avskiljaren i slutet på raden (om den förstås inte är del av flera satser inom parenteser). Då en sats inte avslutas med en avskiljare på toppnivån skrivs resultatet ut efter körning.

Till exempel kommer

function f(x)=x^2
f(3)

att först skriva ut resultatet av att ställa in en funktion (en representation av funktionen, i det här fallet (`(x)=(x^2))) och sedan det förväntade 9. För att undvika detta, ange en avskiljare efter funktionsdefinitionen.

function f(x)=x^2;
f(3)

Om du behöver stoppa en avskiljare i din funktion måste den omges av parenteser. Till exempel:

function f(x)=(
  y=1;
  for j=1 to x do
    y = y+j;
  y^2
);

Följande kod producerar ett fel då den matas in i toppnivån för ett program, medan den kommer fungera fint i en funktion.

if Ngt() then
  ExekveraNgt()
else
  ExekveraNgtAnnat()

Problemet är att efter Genius matematikverktyg ser slutet på raden efter den andra raden kommer det att avgöra att vi har hela uttrycket och exekvera det. Efter exekveringen är klar kommer Genius matematikverktyg att gå till nästa rad och se else, och det kommer att producera ett tolkfel. För att fixa detta, använd parenteser. Genius matematikverktyg kommer inte låta sig nöja förrän det har sett att alla parenteser stängts.

if Ngt() then (
  ExekveraNgt()
) else (
  ExekveraNgtAnnat()
)