David Feuer
David Feuer
Instead of using `Any`, use `TypeRep Any` or `f Any`. This makes it considerably easier to see what each coercion is actually doing. It also allows the compiler to use...
We don't actually have to check all the elements to see that two `TArray`s are equal.
Closes #35
It's trivial to write ```haskell instance MArray TArray e IO ``` just like the instance for `STM`. Creation and reading operations can use the `IO` variants of `TVar` operations, and...
Currently, a `TArray` is a *boxed* `Array` of `TVar`s. This seems kind of silly. If `TArray` is used at all, the array should surely be unboxed to reduce indirection. Nowadays,...
This is another alternative design for `TQueue`. Instead of an amortized queue, this uses a real-time one based on Okasaki's scheduled banker's queues. We limit contention by using two independent...
Previously, `TQueue` could build up a large write list, leading to the reader having to do too much work reversing it and aborting. Rotate the queue more frequently so the...
Normalizing in the `Lift` instance can reduce normalization work in generated splices.
I have the feeling there are more out there. For example, I'd expect lifting `restoreM` to be a no-op: ```Haskell liftBaseWith $ \runInBase -> do ... s
It's been a *while*.