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