haskell-jp / beginners #19 at 2021-12-25 23:57:52 +0900

今日のAtCoder の AtCoder Beginner Contest 233で StateT (MaybeT (ST s)) モナドを使い、

lift . MaybeT . return :: Maybe a -> StateT (MaybeT (ST s)) a

を捻り出すのに割と時間を取られてしまったのですが、もうちょっと簡単な書き方ってありますか?
あー…。どうでしょう。この場合 base monad って ST s になりそうなので

liftBase :: ST s a -> StateT Int (MaybeT (ST s)) a

であるような気もします。
getAlt . Foldable.foldMap (Alt . pure) :: (Foldable f, Alternative t) => f a -> t a

でもいけますけど、うーん。