A Cayenne nyelv

Rejtett argumentumok



Rejtett argumentumok

Sok függvénynek van olyan argumentuma ami úgy tűnik nem szolgál semmi célt, kivéve a felhasználó idegesítése. Ilyen az
if :: (a :: #) -> System$Bool.Bool -> a -> a -> a
Az if minden használatakor a két ág típusát meg kell adni.

Hogy lecsökkentse ezt a problémát a Cayenne egy mechanizmust használ, hogy kihagyjon egyes argumentumokat az alkalmazás helyről. Az argumentumoknak már adottnak kell lennie mikor a függvény definiált. Rejtett argumentumok bevezetik a függvény típusok egy új verzióját, függvény absztakció, és függvény alkalmazás.

A függvény nyíl a típusban és az absztrakció jelrendszerben irható |-> a rejtett argumentumok szamara. Egy rejtett argumentum alkalmazása infix | hsznál. De normál esetben a rejtett argumentumot nem kell adottnak lennie.

Függény definíciókban a rejtett argumentumoknak nem kellene mutatni a bal oldalon kivéve ha elsőbbséget élvez egy |, pl. a bal oldal úgy néz ki mint egy alkalmazás.

Pl:

if :: (a :: #) |-> Bool -> a -> a -> a; if (True) x y = x; if (False) x y = y;
Ez az if függvény használható mint if True 1 2, vagy még kifejezőbben if |Int True 1 2.

Rejtett argumentum egy szintaktikus egység, mélyebb szemantikus tulajdonságok nélkül. A függvény típusnak a rejtett argumentumokra nem úgy kellene mutatnia mint egy új típus. Ez teljesen kompatibilis a normál függvény típussal. Csak kiszolgál mint egy marker, hogy segítse a rejtett argumentumok inzertálását.

A rejtett argumentum feature még mindíg fejlesztés alatt.