Xia Li-yao
Xia Li-yao
> Currently take (length xs - 2) . drop 1 is O(n) because length is O(n) We can use `dropEnd` for this.
> what text is good for — taking substrings in constant time. You can't take a substring of a UTF-8 string in constant time, because characters have encodings of variable...
I merged #631 so you can rebase to see if more of the CI tests pass.
This fell off my todolist. Sorry for the delay!
This looks like a fine change to me. I'm also puzzled why `Identity` is in this instance in the first place.
@kozross What is the origin of the `MonadSelect` class? It looks quite odd compared to other `MonadX` classes in mtl that all have an instance of the form `Monad m...
I think we agree that something odd is going on with that class, but "not a monad transformer" isn't quite the right way to put it. Strictly speaking, a monad...
Practically, it may be wiser to just not touch `MonadSelect`, to avoid a breaking change, until either a concrete (even toy) use case or a more convincing replacement comes up....
You would not have a `Biparser` type, but a class. ```haskell class (Profunctor p, forall u. Monad (p u)) => Biparser p where char :: p Char Char -- other...
I think if you just want to be able to allow different combinations of primitives, having individual classes for those primitives is both simple and good enough. Exposing `MonadState` presumes...