diff --git a/Control/Monad/Trans/List.hs b/Control/Monad/Trans/List.hs
index 3cde4ce6b4d07077364beeb7ccd9fc91611b8072..919898e47c80b944781d80bf21ea5a030851beff 100644
--- a/Control/Monad/Trans/List.hs
+++ b/Control/Monad/Trans/List.hs
@@ -145,8 +145,8 @@ instance (Monad m) => MonadPlus (ListT m) where
 
 instance (MonadFix m) => MonadFix (ListT m) where
     mfix f = ListT $ mfix (runListT . f . head) >>= \ xs -> case xs of
-        [] -> pure []
-        x:_ -> (x:) <$> (runListT . mfix) ((mapListT . fmap) tail . f)
+        [] -> return []
+        x:_ -> liftM (x:) (runListT (mfix (mapListT (fmap tail) . f)))
     {-# INLINE mfix #-}
 
 instance MonadTrans ListT where