一般化すると
whileWithMeta :: (meta -> m (Maybe meta)) -> meta -> m ()
whileWithMeta act meta = act meta >>= \case
Nothing -> pure ()
Just meta' -> whileWithMeta act meta'
かな。
一般化すると
whileWithMeta :: (meta -> m (Maybe meta)) -> meta -> m ()
whileWithMeta act meta = act meta >>= \case
Nothing -> pure ()
Just meta' -> whileWithMeta act meta'
かな。
No replies yet.