
On Thu, Dec 14, 2006 at 10:16:10AM +0000, Neil Mitchell wrote:
I'd say our worst feature is tending to give solutions which are not "simple" Haskell, but make use of advanced features. When a beginner asks a question, sometimes the answer requires GADT's, Template Haskell, rank-2 types etc. However this is usually because they asked the wrong question - thinking in an imperative frame of mind. Often it would be better to peel back to the original problem, where the answer is more likely to be pure neat Haskell.
I guess unsafePerformIO is just one instance of this.
Absolutely. Some more questions of this type: How do I update a variable? How can I efficiently update an array? How do I get debugging output? How can I put different types of things in a list? Sometimes the person asking is ready for the advanced features, but all too often beginners are pointed at IORefs, the ST monad, trace and existential types, when, as you say, they probably asked the wrong question because they don't have the frame of reference to know what they need.