A Kite programozási nyelv

Alprogramok, modulok



Szintaxis

Metódusokat szintén a többi nyelvhez hasonlóan definiálunk, viszont nem különböztetjük meg kulcsszóval a függvényeket és az eljárásokat. A visszatérési érték az abban szereplő utolsó kifejezés értéke lesz. A metódusokat a | (pipe) jellel hívjuk meg. A blokkokat a [ és a ] jel határolja. A return utasítással befejezhetjük a metódus végrehajtását.

class Hello from Greeting [
 method sendGreeting(string) [
  string|print;
 ];
];

method greetings() [
 (make Hello())|sendGreeting("hello");
];

Névtelen metódusokat is definiálhatunk.

x = method(a) [
 (a + 1);
];
(x(1))|print;

Paraméterátadás

A metódusoknak akármennyi paraméterük lehet, viszont típust itt sem adhatunk meg. Nem lehetséges alapértelmezett értéket megadni. A paraméterátadás az immutable típusok esetében érték szerinti, listák és a felhasználó általá létrehozott objektumok esetében pedig referencia szerinti.

Túlterhelés

Túlterhelés szintén lehetséges. Metódusoknál a túlterhelés lényegében csupán a paraméterek számának változását jelenti.

class Hello from Greeting [
 method sendGreeting() [
  this|sendGreeting("hello");
 ],
 method sendGreeting(greeting) [
  greeting|print;
 ]
];

Lehetőség van az operátorok túlterhelésére is a operator kulcsszóval, ám ezek előre meghatározott nevekkel rendelkeznek.

név műveleti jel elnevezés
plus + újsor
minus - kivonás
multiply * szorzás
divide / osztás
mod % mod
unplus + unáris összeadás
unminus - unáris kivonás
map <- map (foreach)
reduce <| hajtogatás
array [] tömb dereferencia
array_set []= tömb értékadás
lt < kisebb
gt > nagyobb
leq <= kisebb
geq >= kisebb
and and logikai/bitenkénti és
or or logikai/bitenkánti vagy
not not logikai/bitenkénti negáció
xor xor logikai/bitenkéni kizáró vagy
lshift << balra shiftelés
rshift >> jobbra shiftelés

Rekurzió

A rekurzió a többi programnyelvhez hasonlóan használható.