David Feuer
David Feuer
`destroy` was defined exactly the same as `destroyExposed`, allowing users to distinguish between streams depending on their `Effect` layering. Now I *believe* it hides this implementation detail properly. Fixes #34
Okasaki's lazy binomial heaps have good amortized bounds, but extraction is linear in the worst case. It's quite easy to make all operations worst-case logarithmic by representing the spine as...
`empty` blatantly breaks referential transparency through its use of `unsafePerformIO`. Deprecate it and add `mkEmpty` as a safe alternative. Add a `.gitignore` file.
Under Linux, the [`inotify`](http://man7.org/linux/man-pages/man7/inotify.7.html) API offers a much more efficient approach to updates than checking files for changes on a fixed schedule. It would be nice to use that where...
`empty` is defined as ``` haskell -- | A completely empty configuration. empty :: Config empty = Config "" $ unsafePerformIO $ do p
Currently, ``` haskell lookupDefault def cfg name = fromMaybe def lookup cfg name ``` I'd have expected ``` haskell lookupDefault def cfg name = maybe (return def) return = Config...
If a socket is opened, but then never used, the garbage collector runs at exactly the wrong time, and an asynchronous exception is delivered at exactly the wrong time, then...
`socket` installs its finalizer using ```haskell _
With some languages, environments, and examples, exceptions can get *very long*. They may get too long to fit in an SO question (dozens or hundreds of pages), but even if...
Separate concerns for `TagMap`, add functionality, and try to manage the inherent unsafety a bit better. I don't really see what `MyTag` has to offer by way of optimization, so...