exec2 :: Queue a -> Queue a
exec2 (Q lenf f state lenr r) = case exec (exec state) of
  Done newf -> Q lenf newf Idle lenr r
  newstate -> Q lenf f newstate lenr r
exec2 :: Queue a -> Queue a
exec2 (Q lenf f state lenr r) = case exec (exec state) of
  Done newf -> Q lenf newf Idle lenr r
  newstate -> Q lenf f newstate lenr r
exec2 (Q lenf f state lenr r) = case exec (exec state) of
  Done newf -> Q lenf newf Idle lenr r
  newstate -> Q lenf f newstate lenr r