
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.