{"action":"created","issue":{"url":"https://api.github.com/repos/purescript-contrib/purescript-freet/issues/3","repository_url":"https://api.github.com/repos/purescript-contrib/purescript-freet","labels_url":"https://api.github.com/repos/purescript-contrib/purescript-freet/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/purescript-contrib/purescript-freet/issues/3/comments","events_url":"https://api.github.com/repos/purescript-contrib/purescript-freet/issues/3/events","html_url":"https://github.com/purescript-contrib/purescript-freet/pull/3","id":142057972,"number":3,"title":"[WIP]: Performance Improvement","user":{"login":"clinuxrulz","id":278292,"avatar_url":"https://avatars.githubusercontent.com/u/278292?v=3","gravatar_id":"","url":"https://api.github.com/users/clinuxrulz","html_url":"https://github.com/clinuxrulz","followers_url":"https://api.github.com/users/clinuxrulz/followers","following_url":"https://api.github.com/users/clinuxrulz/following{/other_user}","gists_url":"https://api.github.com/users/clinuxrulz/gists{/gist_id}","starred_url":"https://api.github.com/users/clinuxrulz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clinuxrulz/subscriptions","organizations_url":"https://api.github.com/users/clinuxrulz/orgs","repos_url":"https://api.github.com/users/clinuxrulz/repos","events_url":"https://api.github.com/users/clinuxrulz/events{/privacy}","received_events_url":"https://api.github.com/users/clinuxrulz/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":11,"created_at":"2016-03-19T12:45:01Z","updated_at":"2016-04-05T03:52:57Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/purescript-contrib/purescript-freet/pulls/3","html_url":"https://github.com/purescript-contrib/purescript-freet/pull/3","diff_url":"https://github.com/purescript-contrib/purescript-freet/pull/3.diff","patch_url":"https://github.com/purescript-contrib/purescript-freet/pull/3.patch"},"body":"There are a few papers floating around on the web recently that show adding codensity on top of a naive FreeT produces a FreeT with good performance.\r\n\r\nCodensity would normally lead to stack overflow. However, fortunately the implementation for a stack-less codensity is identical to the implementation for a stack-less continuation (which we already have).\r\n\r\nhere are the results:\r\n\r\nleft associated binds: https://github.com/clinuxrulz/purescript-freet-benchmark/blob/master/results/left-bind-large.svg\r\nright associated binds: https://github.com/clinuxrulz/purescript-freet-benchmark/blob/master/results/right-bind-large.svg\r\n\r\nAll I need is to finish the remaining functions from the original interface. I may need help with this.\r\nThey are:\r\n  - freeT\r\n  - liftFreeT\r\n  - hoistFreeT\r\n  - interpret\r\n  - bimapFreeT\r\n  - resume\r\n\r\n(actually quite a few to finish, liftFreeT will be easy)\r\n\r\nLet me know what you think.\r\n\r\nI'll try to track down those papers that suggest using Codensity."},"comment":{"url":"https://api.github.com/repos/purescript-contrib/purescript-freet/issues/comments/205630074","html_url":"https://github.com/purescript-contrib/purescript-freet/pull/3#issuecomment-205630074","issue_url":"https://api.github.com/repos/purescript-contrib/purescript-freet/issues/3","id":205630074,"user":{"login":"clinuxrulz","id":278292,"avatar_url":"https://avatars.githubusercontent.com/u/278292?v=3","gravatar_id":"","url":"https://api.github.com/users/clinuxrulz","html_url":"https://github.com/clinuxrulz","followers_url":"https://api.github.com/users/clinuxrulz/followers","following_url":"https://api.github.com/users/clinuxrulz/following{/other_user}","gists_url":"https://api.github.com/users/clinuxrulz/gists{/gist_id}","starred_url":"https://api.github.com/users/clinuxrulz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clinuxrulz/subscriptions","organizations_url":"https://api.github.com/users/clinuxrulz/orgs","repos_url":"https://api.github.com/users/clinuxrulz/repos","events_url":"https://api.github.com/users/clinuxrulz/events{/privacy}","received_events_url":"https://api.github.com/users/clinuxrulz/received_events","type":"User","site_admin":false},"created_at":"2016-04-05T03:52:57Z","updated_at":"2016-04-05T03:52:57Z","body":"Yes I would. I'll look into that when I get home from work."}}