class ui :: Type -> Type -> Type val mkUi : widget ::: Type -> value ::: Type -> {Render : widget -> xbody, Value : widget -> signal value} -> ui widget value val render : widget ::: Type -> value ::: Type -> ui widget value -> widget -> xbody val value : widget ::: Type -> value ::: Type -> ui widget value -> widget -> signal value con input :: Type -> Type val ui_input : t ::: Type -> read t -> ui (input t) (option t) val input : t ::: Type -> transaction (input t) con select :: Type -> Type val ui_select : t ::: Type -> show t -> ui (select t) t val select : t ::: Type -> list t -> transaction (select t)