次のように、一つのモナドを遅延的に無限に評価できる関数 repM は定義できるでしょうか?

repM :: (Monad) => m a -> m [a]

xs <- repM (return 1)
print $ take 3 xs -- [1, 1, 1]

ys <- take 2 <$> repM (return 1)
print ys -- [1, 1]