4 ms·
That's the default. There are, however, many other interesting computational environments you might want to use, which Haskell let's you enable: controlled, str
by dons 15y ago
That's the default. There are, however, many other interesting computational environments you might want to use, which Haskell let's you enable: controlled, strict evaluation (the use of seq and rnf); local mutable state (the `ST` monad); mutable state with transactions and rollbacks (the `STM` monad); arbitrary effects on the world (the `IO` monad); computations with backtracking (the `Logic` monad); deterministic parallelism with shared state (the `Par` monad) and so on.
Just remember: in Haskell, persistent and immutable is the default. You turn on other environments as you need them.
Why is it the default? So-called "purely functional" programming is a rich, safe, environment for most programming problems, and makes lots of nice things possible, such as trivial parallelization, automatic thread safety, proofs on code via simple equational reasoning, and powerful optimizations.
- alnayyir 15y agoToo bad they made lazy the default.
- BasDirks 15y agocare to elaborate?
- dons 15y agoHaskell is the only widely used language that uses lazy evaluation by default. This has historically lead to confusion and difficulties with reasoning about time and space, particularly when a programmer is coming from a strict language. Why do we care about laziness by default? Like purity, it adds power and expressiveness. ---- Finally, what would a strict Haskell be like? Here's a discussion: http://augustss.blogspot.com/2011/05/more-points-for-lazy-evaluation-in.html http://augustss.blogspot.com/2011/05/more-points-for-lazy-ev... )
- alnayyir 15y agoSpace leaks. Also, unpredictable program behavior (which nearly destroys its usefulness in embedded beyond what perhaps Galois has been doing).
- nandemo 15y agoFor what is worth, Edward Yang is writing an excellent series on space leaks in Haskell: http://blog.ezyang.com/2011/05/space-leak-zoo/ http://blog.ezyang.com/2011/05/space-leak-zoo/ The series require Haskell knowledge but this summary is fairly readable if you have a good grounding on programming language theory and implementation.
- deleted 15y ago[deleted]
- deleted 15y ago[deleted]
- calebmpeterson 15y agoThank you for a thorough overview.