1) If another language has a feature, add it to Haskell, so that absolutely everything can be done in more than one way. This allows people to write Haskell programmes without going through the tiresome process of learning Haskell.` 2) Overload the syntax so that the Hamming distance between syntactically valid programmes is very small 3) Allow casting of any type to any other.
2 and 3 together mean that the programmer wins the "fight" with the compiler more often, and can get on with the exciting business of debugging. 4) Add lots of libraries with widely different styles of interface lacking any recognisable algebraic properties. This makes it hard to learn the libraries, so the programmer gets increased satisfaction when the task is finally completed, and a programmer who understands a given library becomes more valuable in the market. 4a) write the libraries at a low level of abstraction, using as few sophisticated features as possible. This makes it easier for novice programmers to modify libraries and add *features* 5) Static type checking is for wimps. Move it all to runtime, so debugging is even more exciting. With 3, this allows us the glorious possibility of using the same value in different types with different meanings, mimicking PHP's wonderful strpos etc, where the return value zero indicates failure if it's a boolean or success if it's an integer. 6) Use strings for abbreviated syntax, so avoiding even syntax checking at compile time. 7) On second thoughts, all syntax checking is for wimps. Move the rest of it to runtime too. After all, /part/ of the programme might produce plausible output, and we wouldn't want to miss out on that. This adds the further exciting possiblity that end-users will get to see Haskell syntax errors, so more of the world will hear of Haskell. -- Jón Fairbairn Jon.Fairbairn at cl.cam.ac.uk _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell