On 1 apr 2008, at 13.02, Bulat Ziganshin wrote:
Hello Simon,
Tuesday, April 1, 2008, 2:18:25 PM, you wrote:
How can one answer the question--why choose Haskell over Scheme?
1. static typing with type inference - imho, must-be for production
code development. as many haskellers said, once compiler accept your
program, you may be 95% sure that it contains no bugs. just try it!
2. lazy evaluation - reduces complexity of language. in particular,
all control structures are usual functions while in scheme they are
macros
3. great, terse syntax. actually, the best syntax among several
dozens of languages i know
4. type classes machinery, together with type inference, means that
code for dealing with complex data types (say, serialization) is
generated on the fly and compiled right down to machine code
3 and 4 are no convincing arguments for a Scheme programmer. Syntax
is subjective and there Scheme implementations that can serialize
entire continuations (closures), which is not possible in Haskell (at
least not without GHC-API).
Static typing, though it might sound constraining at first, can be
liberating! How that? Because it allows you to let the type-checker
work for you! By choosing the right types for your API, you can
enforce invariants. For example you can let the type-checker ensure
that inputs from a web-application are always quoted properly, before
using them as output. A whole class of security problems is taken
care of forever, because the compiler checks them for you.
If you're used to REPL-based programming, it can be a bit annoying
that you can't run non-type-checking code, but you get used to it.
After a while you will miss the safety when you program in Scheme again.
There's more, but I count on others to step in here.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe