WxHaskell
wxHaskell | ||||
---|---|---|---|---|
Ontwerper(s) | Daan Leijen | |||
Ontwikkelaar(s) | Daan Leijen | |||
Besturingssysteem | Cross-platform | |||
Geschreven in | C++ | |||
Categorie | Widget toolkit | |||
Licentie(s) | Licentie van wxWidgets | |||
Website | (en) Projectpagina | |||
|
De GUI-bibliotheek wxHaskell wordt gebruikt voor de functionele programmeertaal Haskell. Het is een bibliotheek voor wxWidgets, een bibliotheek geschreven in C++, die op allerlei computerplatformen, zoals Windows, GTK+ en Mac OS X, gebruikt kan worden. De taal wxHaskell is hoofdzakelijk ontwikkeld en ontworpen door Daan Leijen.
Overzicht
De software bestaat uit vier delen:
wxdirect
, een programma dat speciaal geschreven C headers leest en laag niveau Haskell FFI bindings schrijft voor de geëxporteerde functieswxc
, een DLL met C-interface naar wxWidgets (Haskell compilers kunnen niet linken met C++ software). Wxc kan ook gebruikt worden voor bindingen met andere talen- Module
Graphics.UI.WXCore
, de interface tussen Haskell en wxc - Module
Graphics.UI.WX
, een abstractie daarbovenop. DeWXCore
-bibliotheek biedt enkele abstracties maar geen zaken als overloading of nieuwe monads. DeWX
-bibliotheek biedt dit soort zaken wel voor het instellen van eigenschappen en attributen van onderdelen van de interface
WxHaskell maakt gebruik van combinatoren voor het specificeren van de lay-out. Deze combinatoren kunnen gebruikt worden om de eigenschappen van de widgets (alignment, expansion en stretch) in te stellen.
Licentie
WxHaskell is beschikbaar onder dezelfde licentie als wxWidgets. Deze licentie is bijna identiek aan de GNU Lesser General Public License, met één wijziging: werken die met deze bibliotheek zijn gemaakt, kunnen worden uitgebracht onder eigen voorwaarden. Hiermee is het ook mogelijk commerciële applicaties te maken zonder bijvoorbeeld de broncode vrij te hoeven geven.
Voorbeeld
De onderstaande code toont een klein venster met de titel "Hello!" en een werkende knop om af te sluiten:
module Main where
import Graphics.UI.WX
main :: IO ()
main
= start hello
hello :: IO ()
hello
= do f <- frame [text := "Hello!"]
quit <- button f [text := "Quit", on command := close f]
set f [layout := widget quit]
Externe links
- (en) Het project wxHaskell op de Haskell Wiki
- (en) wxHaskell - A Portable and Concise GUI Library for Haskell, Daan Leijen
- (en) WX-documentatie - Overzicht van alle modules en functies in de WX-module
- (en) WXCore-documentatie - Overzicht van alle modules en functies in de WXCore-module