私はMonadTransのいくつかの事例を見てきましたが、MaybeTの実装は次のようになります。再帰liftIO
instance MonadTrans MaybeT where
lift = MaybeT . liftM Just
私はMonadIOのインスタンスは、内側からリフトの可変数を行うために使用されて理解したようほとんどの場合、IOモナドは直接最外にあります。 MaybeTケースの場合には、次のようになります。
instance (MonadIO m) => MonadIO (MaybeT m) where
liftIO = lift . liftIO
私は理解していないことは、この再帰関数は無限ループを脱出する方法です。ベースケースとは何ですか?