[Haskell-cafe] Dynamic choice of "reverse" implementation
Brian Hulley
brianh at metamilk.com
Fri Sep 28 12:54:23 EDT 2007
Krzysztof Kościuszkiewicz wrote:
> So the type of mapM_ used in the code is
> (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
>
> I'd like to keep the generic Foldable t there when "m" is specialized to IO.
> I thought this would allow type of "reversor" to be specialized to
> (Foldable f) => [String] -> f String
>
> ... I'd like to avoid [a] -> something -> [a]
Yes this type should be fine. To implement reversor though you'd still
need to first convert from the concrete list to whatever foldable you're
using, before reversing the foldable, or implement something more
general eg:
reversor :: (Foldable f, Foldable g) :: f a -> g a
Of course with lazy evaluation + compiler optimizations the lists in [a]
-> something -> [a] should be erased at compile time... ;-)
Regards, Brian.
More information about the Haskell-Cafe
mailing list