David Feuer
David Feuer
The easiest way to get started will probably be to build a clone of most of `Data.Map` using ``` haskell newtype Map k v = Map (DMap (Const k) (Const...
Pretty much everyone hates the `Monoid` instance for `Data.Map`. If you're not too terribly opposed to potentially breaking existing code to make future users happy, you can avoid the problem...
`Data.Map` always uses the keys from left arguments in preference to right ones. I can't tell what the rules are here, if there are any. I think this should either...
The following type family is often useful: ```haskell type LazyTake :: Nat -> [k] -> [k] type family LazyTake n xs where LazyTake 0 _ = '[] LazyTake n xs...
Just for fun, I decided to try porting `Data.Map` to `singletons`. I know, that's crazy. [Here's the code](https://gist.github.com/treeowl/c35362c7a7874a3c2b5643544639f1bb). It takes a while to compile that, but that doesn't bother me....
`listFilesRecursive` is defined using `for` and `mconcat`. Better to use `foldM` or `foldlM`, which will allow you to force set insertions as you go.
It's been rather a while.
By analogy, perhaps we want `IxApply` instead.
There are notions of mapping, folding, and traversing available for type-aligned sequences: ``` haskell class TAMappable t where tmap :: (forall x y . c x y -> d x...
The indexed equivalent of `Control.Applicative.Backwards.Backwards`: ``` haskell newtype IxBackwards m i j a = IxBackwards {ixForwards :: m j i a} instance IxFunctor f => IxFunctor (IxBackwards f) where imap...