PropLang: Difference between revisions

From HaskellWiki
No edit summary
Line 1: Line 1:
A design for a GUI library which is more like Haskell and less like C.
A design for a GUI library which is more like Haskell and less like C. To be written over Gtk2Hs.


Link: http://www.cse.unsw.edu.au/~chak/haskell/ports/
Link: http://www.cse.unsw.edu.au/~chak/haskell/ports/
Line 5: Line 5:
== Thoughts by ==
== Thoughts by ==


Neil Mitchell
Neil Mitchell, Duncan Coutts


== The Var concept ==
== The Var concept ==

Revision as of 00:33, 18 July 2006

A design for a GUI library which is more like Haskell and less like C. To be written over Gtk2Hs.

Link: http://www.cse.unsw.edu.au/~chak/haskell/ports/

Thoughts by

Neil Mitchell, Duncan Coutts

The Var concept

This is the low level stuff, on which the library will be built

data Var a = ...
data Notify
get :: Var a -> IO a
set :: Var a -> a -> IO ()
addNotify :: Var a -> IO () -> IO Notify
remNotify :: Notify -> IO ()
newVar :: a -> IO (Var a)

Object layering

textBox-text -< "test"
filename <- newVar Nothing
addNotify filename hatCover
lbl-text =< with filename $ \x ->
                 case x of
                     Nothing -> "Select a file"
                     Just x -> "Loaded: " ++ x


where

(-) :: GtkObject -> GtkProp -> Var a -- ignoring lots of details here
(-<) :: Var a -> a -> IO ()
(=<) :: Var a -> Action a -> IO ()
with :: Var a -> (a -> b) -> Action b