concrete functor and monad transformers

#32Add the correct ListT transformer

It would be nice to see a law-abiding list transformer in the transformers package. Such an implementation exists in the list-transformer package: http://hackage.haskell.org/package/list-transformer-1.0.1/docs/List-Transformer.html

What do you think about porting this to transformers. It would need to be renamed (probably to something like StreamT), and the existing non-law-abiding ListT could stay as it is.

  • I think a better option would be to simply remove transformers bug-prone implementation - it has no users anyhow because it does not work, so it should be safe to remove it. Hackage had other working implementations around for ages (like that in the List package)..

  • The problem with adding the "correct" list monad transformer is that there are too many different correct notions of list monad transformer!

  • What different correct notions of list monad transformers are there? I'm only aware of a single one, which is:

    data ListT m a = ListT (m (Maybe (a, ListT m a)))
    • status set to closed

    ListT is gone