Amikor az 'a option típust használva azt akarjuk értékül adni, hogy semmi, akkor a NONE adatkonstruktorállandót kell használnunk. Ha pedig valódi értéket akarunk értékül adni, akkor a SOME adatkonstruktorfüggvényt.
Az 'a option deklarációja ez:
Szerencsére vannak könyvtári függvények (pl. List.mapPartial), amelyek ,,eltakarják'' ezt a komplexitást.
Remélem, megvilágítottam a dolgot (és nem tévedtem).
A könyvtári függvényeket általában a Konyvtar.fuggveny teljes - vagy másképpen minősített, angolul qualified - névvel lehet elérni, pl. Int.fromString. Fontos, hogy Unix/Linux alatt a kis- és nagybetűket a könyvtár- és függvénynevekben meg kell különböztetni, azaz Int és nem int vagy INT. A programok hordozhatósága érdekében az írásmódra Windows alatt is ügyelni kell. A pontos írásmódot a könyvtári függvényeket ismertető leírások tartalmazzák.
Ha a programjukat - pl. az mosmlc fordítóval - lefordítják le és összeszerkesztik (ezt teszi a kis- és nagyházik beadásakor a tesztkörnyezet is), akkor a könyvtárak használata általában nem jelent további technikai nehézséget.
Az mosml értelmező használatakor viszont a program betöltése előtt a felhasználandó könyvtárakat be kell tölteni, ezt az
Bizonyos gyakran használt könyvtárakat (pl. String, List) nem kell betölteni, mert induláskor az mosml értelmező ezeket automatikusan betölti.
Ha nem akarják kiírni egy-egy könyvtári függvény teljes nevét (ami egyébként hasznos, többek között javítja a program olvashatóságát), akkor az adott könyvtárat megnyithatják az open Konyvtar deklarációval, pl.
A load csak az ún. interaktív módban, azaz mosml-ben használható (akárcsak a use). Az ETS az mosmlc fordítóval lefordítja a programot a futtatása előtt, és a szükséges modulokat automatikusan betölti.
Megoldás lehet az is, hogy láthatóvá teszi a kérdéses könyvtár, pl. a List könyvtár tartalmát, így: open List.
De vajon miért? Szerintem, amibe bele tud kötni, az ez a sor:
Az as nem függvény, hanem kulcsszó. Lásd például az (xxs as x::xs) ún. réteges mintában (angolul: layered pattern), ahol a teljes lista xxs néven, a feje x, a farka xs néven érhető el egy függvénydefinícióban annak a klóznak a törzsében, amelynek a fejében ez a minta szerepel.
Remélem, segítettem. Egyébként érdemes próbálgatni mosml-ben, ha nem érted.