@@ -490,11 +490,15 @@ button s = do
490490
491491newtype Workflow t m a = Workflow { unWorkflow :: m (a, Event t (Workflow t m a)) }
492492
493+workflow :: forall t m a. MonadWidget t m => Workflow t m a -> m (Dynamic t a)
494+workflow w0 = do
495+ rec eResult <- widgetHold (unWorkflow w0) $ fmap unWorkflow $ switch $ fmap snd $ current eResult
496+ mapDyn fst eResult
497+
493498workflowView :: forall t m a. MonadWidget t m => Workflow t m a -> m (Event t a)
494499workflowView w0 = do
495500 rec eResult <- dyn =<< mapDyn unWorkflow =<< holdDyn w0 eReplace
496501 eReplace <- liftM switch $ hold never $ fmap snd eResult
497− eResult `seq` eReplace `seq` return ()
498502 return $ fmap fst eResult
499503
500504divClass :: forall t m a. MonadWidget t m => String -> m a -> m a