A Concurrent Clean 2.3 programozási nyelv

Az Object I/O

Bevezetés

A Clean kiegészítő könyvtárának, az Object I/O library-nek a segítségével programjainkat felhasználói felülettel (UI) láthatjuk el. Ebbe tartoznak az ablakok és a dialógusok, valamint a különféle vezérlők. Továbbá ide sorolhatóak a menük, időzítők, és különféle üzenetküldő és -fogadó objektumok. Új lehetőség az interaktív processzek indítása/leállítása, azaz a fő program kisebb részekre való bontása. Lehetőség van a vágólap (Clipboard) használatára is, valamint az Object I/O library-t használó programok képesek TCP kapcsolatok lebonyolítására is.

Interaktív objektumok

A következő interaktív objektumok léteznek az Object I/O könyvtárban (ezek az építőkövek):

Ezeket a vezérlőket az algebrai adattípusoknak megfelelően lehet definiálni, például ha egy "Button" feliratú nyomógombot akarunk definiálni, akkor azt a következőképp tehetjük meg:

button = ButtonControl "Button" []

A "Button" az osztály konstruktorának paramétere, a vezérlő attribútumok üres halmazát pedig a [] üres lista adja meg.

Hello World program

Az alábbi program megjelenít egy ablakot, amiben a "Hello World" felirat látható:

modules hello import StdEnv, StdIO Start :: *World -> *World Start world = startIO NDI Void initialise [] world where initialise pst # (error,pst) = openDialog Void hello pst | error<>NoError = closeProcess pst | otherwise = pst hello = Dialog "" ( TextControl "Hello World!" [] ) [ WindowClose (noLS closeProcess) ]

A startIO Void típusa azt adja meg, hogy a programnak nincs számunkra érdekes lokális állapota. A dialógusablaknak egy attribútuma van, egy callback függvény, amit abban az esetben kell használni, amikor a felhasználó be akarja csukni az ablakot. Ekkor csupán a "Hello World!" programot kell bezárni, éppen ezért elég a closeProcess is.