David Feuer
David Feuer
Amortization can be a performance issue in concurrent code, or when rebuilding has bad cache effects. It's been quite a while, but as I recall scheduled queues beat out amortized...
Please don't include your Stack files. While I won't *require* it, I would prefer to see validity tests and also property tests (with validity tests) added both for `filterKeys` and...
Good point.
I've been wanting to make an equivalent of the `Data.Map` `mergeA` interface for sets for a long time, but I've never gotten around to it. That would include this operation.
I'd think ```haskell data Pair a = Pair a a ``` We'd have to make sure it generated good code in typical cases.
For prefixes, you should look at `findFirstPrefix`, `findLongestPrefix`, and `findShortestPrefix`. For suffixes, I think you need to use `match` with an appropriate argument.
Everything should be efficient if it can be, yes! Thanks.
I can't make head or tail of the current algorithm. Is it explained in the paper? Please comment your version liberally; this doesn't seem likely to be obvious.
The new `bcc` code still uses `forest` twice, successively (i.e., not interleaved). This strikes me as rather bad. King and Launchbury pushed for lazy `dfs`; [Tarjan's paper](https://github.com/tpn/pdfs/blob/master/Depth-First%20Search%20and%20Linear%20Graph%20Algorithms%20-%20Tarjan%20(1972).pdf) does ... something...
We can achieve semi-lazy `dfs` (lazy in preorder) using lazy `ST`.