+$ model [xs=(list @t) draft=@t error=(unit @t)] +$ message %start %stop +$ input [message model] ++ main (program init update view subs) ++ init |= ts=(list @t) [ts "" ~] ++ update |= in=input ^- [model (list (cmd message))] [[~ "" ~] ~] ++ view |= state=model ^- (element message) (text "view") ++ subs |= state=model ^- (list (sub message)) ~