Hashtables, a new Haskell library for fast mutable hash tables
gregorycollins.net
Hashtables, a new Haskell library for fast mutable hash tables
1–10 of 13 posts
Re: Hashtables, a new Haskell library for fast mutable hash tables
#2Re: Hashtables, a new Haskell library for fast mutable hash tables
#3mutability in Haskell? I thought Haskell was purely functional i.e. lazy and immutablility are foundational. Can someone clarify please?
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.
Re: Hashtables, a new Haskell library for fast mutable hash tables
#4mutability in Haskell? I thought Haskell was purely functional i.e. lazy and immutablility are foundational. Can someone clarify please?
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 p…
Re: Hashtables, a new Haskell library for fast mutable hash tables
#5mutability in Haskell? I thought Haskell was purely functional i.e. lazy and immutablility are foundational. Can someone clarify please?
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 p…
Re: Hashtables, a new Haskell library for fast mutable hash tables
#6Earlier quoted context omitted.
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 p…
Too bad they made lazy the default.
Re: Hashtables, a new Haskell library for fast mutable hash tables
#7Earlier quoted context omitted.
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 p…
Too bad they made lazy the default.
Re: Hashtables, a new Haskell library for fast mutable hash tables
#8Earlier quoted context omitted.
Too bad they made lazy the default.
care to elaborate?
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-ev... )
Re: Hashtables, a new Haskell library for fast mutable hash tables
#9Earlier quoted context omitted.
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 p…
Too bad they made lazy the default.