foldable flexible bridges (putting foldable+traversable in prelude) Re: Burning bridges

Henning Thielemann lemming at henning-thielemann.de
Tue May 21 22:44:35 CEST 2013


On Tue, 21 May 2013, Casey McCann wrote:

> Being a beginner is by definition an ephemeral state; the entire
> purpose of being a beginner is to eventually stop being one. Don't
> design a language (or anything else) around the needs of beginners
> unless you intend that only beginners will use it, in which case one
> wonders why they're even bothering.

The other way round does not work, too. If you are trying to put the most 
general (thus most "useful" function) to Prelude, you will find that there 
will always be more general generalizations. Today you say

   mapM_ :: (a -> m b) -> [a] -> m ()

should be replaced by more general

   mapM_ :: (a -> m b) -> f a -> m ()

But this is not the most general form. We have discussed several times 
about generalizing the (), without a conclusion. But maybe some day there 
might be consensus to generalize the () away ... what will be the next 
generalization? We may generalize the (->) away. What else?

For me it is perfect to start with something simple in Prelude and build 
more general functions around it in other modules. This is a scheme that 
we can manage over time with backwards compatibility.



More information about the Libraries mailing list