[Haskell-cafe] More ideas for controlled mutation
Edward Z. Yang
ezyang at MIT.EDU
Sun Apr 24 23:53:28 CEST 2011
Yep. It harkens to my days of forcing impure, non-thread-safe
C libraries into nice, pure, Haskell FFI bindings. I suppose what
I'd like to do here is work in the unsafe IO much more closely
with GHC's existing facilities, so that we spend as much time
as possible /not/ in unsafePerformIO. A kind of hybrid approach,
if you will.
P.S. Don Stewart points out that Edward Kmett has can access
GHC's pointer tags http://hackage.haskell.org/package/tag-bits,
thus allowing us to approximate evaluated/not evaluated. Maybe
I'll hack up a prototype next time round.
Excerpts from Ketil Malde's message of Sun Apr 24 17:41:23 -0400 2011:
> "Edward Z. Yang" <ezyang at MIT.EDU> writes:
> > I've been toying around with some ideas where we do alternative
> > forms of controlled mutation. One such idea has to do with memoization.
> > Hash tables take advantage of this fact by simply chaining together values
> > in a linked list if they land in the same bucket. [...]
> > An obvious way to do this is to use unsafePerformIO to
> > read out an IORef stating the value currently being looked up, and
> > have the thunk evaluate to the pair of that key and the result. There
> > are some synchronization concerns, of course:
> Seen this?
More information about the Haskell-Cafe