
* Static typing, which increases robustness by allowing the compiler to catch many common errors automatically.
* Type inference, which deduces types automatically and frees the programmer from writing superfluous type signatures.
* Higher order functions, polymorphism, and lazy evaluation, which enable higher levels of abstraction and more compositional, thus more reusable code.
"frees the programmer from writing superfluous type signatures" is a weak (and dubious) advantage. I very often write "superfluous" type signatures first (to be sure I know what I'm asking my program to do) and only then let Haskell check it. Then I leave it in as good documentation. Also, if you're going to stress the benefits for the casual or new reader, maybe you should spell them out explicitly: * Static typing - Compiler automatically infers a static type for every expression, completely eliminating any potential for runtime type mismatch errors, and checks any programmer-supplied type annotation for correctness. The absence of silent typecasting also eliminates a whole class of hard-to-find program logic errors. * Higher-order functions and polymorphism - Encourages higher-level abstraction and unshackles algorithm design from implementation details. * Lazy evaluation - Separates the concerns of the called function ("what can I provide?") and the calling function ("how much do I need to know?") and facilitates "borrow-from-the-future" techniques where useful with infinite data structures or recursive algorithms. Thomas Schilling wrote:
On Mon, 2007-11-26 at 20:31 -0800, David Fox wrote:
On Nov 26, 2007 11:38 AM, Thomas Schilling
wrote: Haskell is a general-purpose, pure functional programming languages that puts many interesting results from research into a practical programming language. It's features include:
I think it is stronger to say "many powerful results" rather than "many interesting results".
Yes, good!
Also it should be "its" rather than "it's", but I didn't want to reply to my own message since it was meant as a draft to work with.
I'd like to turn this into a refinement of a concrete proposal. I skimmed the original thread and it pretty much diverged into experience reports or meta-level discussions on what or how to advertise Haskell. This has its place, but I think we can get to a description that is good enough for now and addresses Don's issues mentioned in the thread-starting message.
So, I would welcome more concrete adjustments to my proposal.
/ Thomas
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe