A InfoWiki wikiből
Tartalomjegyzék |
Támogatott jellemzők
- C#-ban is ismert alapvető nyelvi típusok
- longInt és longDouble tetszőleges hosszú és pontosságú számok kezelése
- lusta és szigorú kiértékelés (lazy, strict)
- szekvenciális végrehajtás
- C# natív kódú függvények meghívása
- függvénnyel paraméterezhetőség (currying)
- egygépes, többszálú, elosztott kódvégrehajtás támogatása kiértékelési stratégiákkal
Szintaktikai leírás
Példaprogramok
Listák
Kardinális kérdés lehet a listák kezelése, mivel listák átadása más függvényeknek, rekurzív feldolgozása során a listák másolása a memóriában nem megengedett teljesítménybeli és memóriahatékonysági megfontolásokból.
Ugyanakkor amennyiben egy függvény egy lista-paramétert fogad, majd továbbadja azt egy al-függvényének, és az al-függvénye ezt a listát elkezdi 'elfogyasztani', a lista elejének felszabadítása, és az elemek garbage elemésztése szükségszerű. Figyelni kell arra, hogy a hívó függvény e közben még a teljes listát 'birtokolhatja', ami viszont ellenáll a GC-nek, akkor is, ha egyébként már a listára nincs szüksége.
A fordítás és kódoptimalizálás során ezért figyelni kell, hogy amennyiben egy függvény a listát már nem kívánja használni, de lusta kiértékeléssel azt már továbbadta egy másik függvénynek, akkor ne foglalja azt tovább, és engedje dolgozni a GC-t ha az szükséges.