wloop :: a -> (a -> Widget a) -> Widget ()
wloop initialState wa = View $ do
  nid <- genNewId

  FormElm form mx <- runView $ go nid initialState 
    
  return $ FormElm ((Haste.Perch.span ! atr "id" nid $ noHtml) <> form) mx
  where
    go nid state = do 
      nextState <- at nid Insert (wa state)
      go nid nextState
wloop :: a -> (a -> Widget a) -> Widget ()
wloop initialState wa = View $ do
  nid <- genNewId

  FormElm form mx <- runView $ go nid initialState 
    
  return $ FormElm ((Haste.Perch.span ! atr "id" nid $ noHtml) <> form) mx
  where
    go nid state = do 
      nextState <- at nid Insert (wa state)
      go nid nextState
wloop initialState wa = View $ do
  nid <- genNewId

  FormElm form mx <- runView $ go nid initialState 
    
  return $ FormElm ((Haste.Perch.span ! atr "id" nid $ noHtml) <> form) mx
  where
    go nid state = do 
      nextState <- at nid Insert (wa state)
      go nid nextState