{"action":"created","issue":{"url":"https://api.github.com/repos/ivanperez-keera/dunai/issues/26","repository_url":"https://api.github.com/repos/ivanperez-keera/dunai","labels_url":"https://api.github.com/repos/ivanperez-keera/dunai/issues/26/labels{/name}","comments_url":"https://api.github.com/repos/ivanperez-keera/dunai/issues/26/comments","events_url":"https://api.github.com/repos/ivanperez-keera/dunai/issues/26/events","html_url":"https://github.com/ivanperez-keera/dunai/issues/26","id":258330003,"number":26,"title":"Improve API - Function naming","user":{"login":"ivanperez-keera","id":1162320,"avatar_url":"https://avatars0.githubusercontent.com/u/1162320?v=4","gravatar_id":"","url":"https://api.github.com/users/ivanperez-keera","html_url":"https://github.com/ivanperez-keera","followers_url":"https://api.github.com/users/ivanperez-keera/followers","following_url":"https://api.github.com/users/ivanperez-keera/following{/other_user}","gists_url":"https://api.github.com/users/ivanperez-keera/gists{/gist_id}","starred_url":"https://api.github.com/users/ivanperez-keera/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ivanperez-keera/subscriptions","organizations_url":"https://api.github.com/users/ivanperez-keera/orgs","repos_url":"https://api.github.com/users/ivanperez-keera/repos","events_url":"https://api.github.com/users/ivanperez-keera/events{/privacy}","received_events_url":"https://api.github.com/users/ivanperez-keera/received_events","type":"User","site_admin":false},"labels":[{"id":406542240,"url":"https://api.github.com/repos/ivanperez-keera/dunai/labels/enhancement","name":"enhancement","color":"84b6eb","default":true},{"id":695073795,"url":"https://api.github.com/repos/ivanperez-keera/dunai/labels/qa","name":"qa","color":"1d76db","default":false}],"state":"open","locked":false,"assignee":{"login":"turion","id":303489,"avatar_url":"https://avatars0.githubusercontent.com/u/303489?v=4","gravatar_id":"","url":"https://api.github.com/users/turion","html_url":"https://github.com/turion","followers_url":"https://api.github.com/users/turion/followers","following_url":"https://api.github.com/users/turion/following{/other_user}","gists_url":"https://api.github.com/users/turion/gists{/gist_id}","starred_url":"https://api.github.com/users/turion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/turion/subscriptions","organizations_url":"https://api.github.com/users/turion/orgs","repos_url":"https://api.github.com/users/turion/repos","events_url":"https://api.github.com/users/turion/events{/privacy}","received_events_url":"https://api.github.com/users/turion/received_events","type":"User","site_admin":false},"assignees":[{"login":"turion","id":303489,"avatar_url":"https://avatars0.githubusercontent.com/u/303489?v=4","gravatar_id":"","url":"https://api.github.com/users/turion","html_url":"https://github.com/turion","followers_url":"https://api.github.com/users/turion/followers","following_url":"https://api.github.com/users/turion/following{/other_user}","gists_url":"https://api.github.com/users/turion/gists{/gist_id}","starred_url":"https://api.github.com/users/turion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/turion/subscriptions","organizations_url":"https://api.github.com/users/turion/orgs","repos_url":"https://api.github.com/users/turion/repos","events_url":"https://api.github.com/users/turion/events{/privacy}","received_events_url":"https://api.github.com/users/turion/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2017-09-17T20:10:43Z","updated_at":"2017-10-08T19:41:46Z","closed_at":null,"author_association":"OWNER","body":"The nomenclature used for the API is not intuitive. Why are is there a function called `arrM`, another called `arr` and another `liftS`, when they all have similar signatures?\r\n\r\nThis needs to be improved.\r\n\r\nThe naming convention needs to be such that the entry barrier to entry is minimal. I'd rather use names related to signal processing that operational notions (step), but the latter may be unavoidable."},"comment":{"url":"https://api.github.com/repos/ivanperez-keera/dunai/issues/comments/335032526","html_url":"https://github.com/ivanperez-keera/dunai/issues/26#issuecomment-335032526","issue_url":"https://api.github.com/repos/ivanperez-keera/dunai/issues/26","id":335032526,"user":{"login":"turion","id":303489,"avatar_url":"https://avatars0.githubusercontent.com/u/303489?v=4","gravatar_id":"","url":"https://api.github.com/users/turion","html_url":"https://github.com/turion","followers_url":"https://api.github.com/users/turion/followers","following_url":"https://api.github.com/users/turion/following{/other_user}","gists_url":"https://api.github.com/users/turion/gists{/gist_id}","starred_url":"https://api.github.com/users/turion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/turion/subscriptions","organizations_url":"https://api.github.com/users/turion/orgs","repos_url":"https://api.github.com/users/turion/repos","events_url":"https://api.github.com/users/turion/events{/privacy}","received_events_url":"https://api.github.com/users/turion/received_events","type":"User","site_admin":false},"created_at":"2017-10-08T19:41:46Z","updated_at":"2017-10-08T19:41:46Z","author_association":"COLLABORATOR","body":"I'm proposing the following naming guidelines:\r\n\r\n* Suffix `M` generalises something to monads. Example: `arrM :: (a -> m b) -> MSF m a b`\r\n* Suffix `S` generalises something to streams or stream functions. Example: `concatS :: MStream m [b] -> MStream m b`\r\n* Suffix `_` specialises to something not having an input. Example: `arrM_ :: m b -> MSF m a b`\r\n* `lift` means lifting into a monad transformer\r\n* `liftBase` means lifting into a monad base\r\n* `hoist` means applying a (general) monad morphism\r\n* `run` means removing a monad transformer layer\r\n\r\nThis way, all the names follow a clear and standard pattern.\r\nIt would imply the following (and maybe other) renames:\r\n\r\n* `liftS` -> `arrBase :: (Monad m2, MonadBase m1 m2) => (a -> m1 b) -> MSF m2 a b`\r\n* `liftMSFPurer` -> `hoistS :: (Monad m2, Monad m1) => (forall c . m1 c -> m2 c) -> MSF m1 a b -> MSF m2 a b`\r\n* `liftMSFTrans` -> `liftS :: (MonadTrans t, Monad m, Monad (t m)) => MSF m a b -> MSF (t m) a b`\r\n* `liftMSFBase` -> `liftBaseS :: (Monad m2, MonadBase m1 m2) => MSF m1 a b -> MSF m2 a b`\r\n\r\nThis would break some code in articles and @ivanperez-keera 's thesis, though.\r\n\r\nIf you're fine with this, I'll submit a pull request."}}
{"actor":{"display_login":"turion"}}