GUI 1
(pesude code)
data GUI _|_ = Text String | ...
data (GUI (), GUI a) = Button0 (GUI a) | ...
data GUI () = forall a. Button1 (GUI a) | ...
data GUI t = forall t0. Bind (GUI t0) (t0 -> t) | forall t0. forall s. StatedBind (init : s) (GUI t0) (t0, s -> t, s)
data GUI (Listof t) = LeftToRight (Listof (GUI t)) | ...
data GUI t = Virtual (Signal t)