Michael Roth wrote:
Hello list,

maybe I'm just stupid, I'm trying to do something like this:

Ciao Michael,

As an alternative solution to Creighton's:

    import Control.Monad.List

    foobar :: ListT IO Int
    foobar = do
      a <- ListT . return $ [1,2,3]
      b <- ListT . return $ [4,5,6]
      liftIO $ putStrLn $ (show a) ++ " " ++ (show b)
      return (a+b)

    main = do
      sums <- runListT foobar
      print sums


For the expression ListT . return $ [1,2,3] of type ListT IO Int,
the return inferred is:

return: a -> IO a
return [1,2,3] = IO [1,2,3]

and then you wrap the IO [] with the ListT newtype constructor.

Paolo

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to