{"action":"closed","issue":{"url":"https://api.github.com/repos/snoyberg/mono-traversable/issues/95","repository_url":"https://api.github.com/repos/snoyberg/mono-traversable","labels_url":"https://api.github.com/repos/snoyberg/mono-traversable/issues/95/labels{/name}","comments_url":"https://api.github.com/repos/snoyberg/mono-traversable/issues/95/comments","events_url":"https://api.github.com/repos/snoyberg/mono-traversable/issues/95/events","html_url":"https://github.com/snoyberg/mono-traversable/issues/95","id":147205017,"number":95,"title":"RFC: Cleanups","user":{"login":"snoyberg","id":49415,"avatar_url":"https://avatars.githubusercontent.com/u/49415?v=3","gravatar_id":"","url":"https://api.github.com/users/snoyberg","html_url":"https://github.com/snoyberg","followers_url":"https://api.github.com/users/snoyberg/followers","following_url":"https://api.github.com/users/snoyberg/following{/other_user}","gists_url":"https://api.github.com/users/snoyberg/gists{/gist_id}","starred_url":"https://api.github.com/users/snoyberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snoyberg/subscriptions","organizations_url":"https://api.github.com/users/snoyberg/orgs","repos_url":"https://api.github.com/users/snoyberg/repos","events_url":"https://api.github.com/users/snoyberg/events{/privacy}","received_events_url":"https://api.github.com/users/snoyberg/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2016-04-10T08:16:37Z","updated_at":"2016-07-04T09:41:28Z","closed_at":"2016-07-04T09:41:27Z","body":"Now that mono-traversable has been in active use for a while, it's worth reviewing design points and seeing if we can do better. I've given some thought to the following points, and would appreciate feedback on them:\r\n\r\n* Get rid of MinLen. I originally added it as a fancier way of doing NonNull. In practice, I think MinLen just complicates usage and error messages, and isn't particularly useful most of the time. If people like it, it could certainly be moved to a separate package\r\n* Data.ByteVector is misplaced here, and can go elsewhere (maybe chunked-data or classy-prelude)\r\n* We could have a mono-traversable-classes package, which depends on very few packages, and then mono-traversable itself reexports those classes together with orphan instances. This would lower the barrier on providing typeclass instances\r\n* chunked-data provides LazySequence, I think that fits better in the same package as Data.Sequences. (Whether that should still be in mono-traversable is a fair question, but I think its monomorphic nature is a really good fit.)\r\n* The Map-like abstraction I started on [in jump](https://github.com/commercialhaskell/jump/blob/master/src/Jump/Map.hs) is, IMO, an improvement on what we have now. The strictly monomorphic nature of Data.Containers isn't very useful in practice, and prevents some useful methods like `difference` in its full generality. I'd recommend consolidating on the jump-style abstraction, and then decide if we put that in jump, mono-traversable, or a separate package for container-like abstractions (containers-classes?)\r\n* Early on we decided to prefix all MonoFoldable, MonoFunctor, and MonoTraversable function names with `o`. I still think this makes sense for MonoFunctor and MonoTraversable, where the monomorphic functions we provide are not strictly more general than the polymorphic versions. But in the case of MonoFoldable, I believe we want end-users to treat this as a drop-in replacement for Foldable. So I propose: in the case of only a MonoFoldable constraint, remove the prefix `o`.\r\n* We can do a pass over all of the typeclasses and see if any should be removed/renamed/split up.\r\n\r\nI'm not 100% behind all of these ideas, I'm sharing them now to try and elicit useful feedback."}}
{"actor":{"display_login":"snoyberg"}}