{"action":"created","issue":{"url":"https://api.github.com/repos/purescript/purescript/issues/1070","labels_url":"https://api.github.com/repos/purescript/purescript/issues/1070/labels{/name}","comments_url":"https://api.github.com/repos/purescript/purescript/issues/1070/comments","events_url":"https://api.github.com/repos/purescript/purescript/issues/1070/events","html_url":"https://github.com/purescript/purescript/pull/1070","id":69849008,"number":1070,"title":"Inline semigroupoidArr composition","user":{"login":"puffnfresh","id":37715,"avatar_url":"https://avatars.githubusercontent.com/u/37715?v=3","gravatar_id":"","url":"https://api.github.com/users/puffnfresh","html_url":"https://github.com/puffnfresh","followers_url":"https://api.github.com/users/puffnfresh/followers","following_url":"https://api.github.com/users/puffnfresh/following{/other_user}","gists_url":"https://api.github.com/users/puffnfresh/gists{/gist_id}","starred_url":"https://api.github.com/users/puffnfresh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puffnfresh/subscriptions","organizations_url":"https://api.github.com/users/puffnfresh/orgs","repos_url":"https://api.github.com/users/puffnfresh/repos","events_url":"https://api.github.com/users/puffnfresh/events{/privacy}","received_events_url":"https://api.github.com/users/puffnfresh/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-04-21T13:41:42Z","updated_at":"2015-04-21T14:51:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/purescript/purescript/pulls/1070","html_url":"https://github.com/purescript/purescript/pull/1070","diff_url":"https://github.com/purescript/purescript/pull/1070.diff","patch_url":"https://github.com/purescript/purescript/pull/1070.patch"},"body":"An example of the changes:\r\n\r\n```purescript\r\ng :: Boolean\r\ng = not <<< not $ true\r\n\r\nf :: Boolean -> Boolean\r\nf = not <<< not <<< not <<< not\r\n\r\nf' x = (\\y -> f y) x\r\n```\r\n\r\n```js\r\nvar g = !!true;\r\n\r\nvar f = function (_44) {\r\n    return !!!!_44;\r\n};\r\n\r\nvar f$prime = function (x) {\r\n    return f(x);\r\n};\r\n```\r\n\r\nI did the following:\r\n\r\n1. Allowed `everywhereOnJSTopDown` to work in a `Monad`, default is `Identity`.\r\n2. Made `untiFixedPoint` work on a `Monad`.\r\n3. Added `inlineAppliedVars` optimisation, turning `(\\x -> f x) y` into `f y`.\r\n4. Added `inlineArrComposition` optimisation, turning `a >>> b` into `(\\x -> a (b x))`.\r\n\r\nWhat are the drawbacks?\r\n\r\nShould fix #1066."},"comment":{"url":"https://api.github.com/repos/purescript/purescript/issues/comments/94828491","html_url":"https://github.com/purescript/purescript/pull/1070#issuecomment-94828491","issue_url":"https://api.github.com/repos/purescript/purescript/issues/1070","id":94828491,"user":{"login":"coveralls","id":2354108,"avatar_url":"https://avatars.githubusercontent.com/u/2354108?v=3","gravatar_id":"","url":"https://api.github.com/users/coveralls","html_url":"https://github.com/coveralls","followers_url":"https://api.github.com/users/coveralls/followers","following_url":"https://api.github.com/users/coveralls/following{/other_user}","gists_url":"https://api.github.com/users/coveralls/gists{/gist_id}","starred_url":"https://api.github.com/users/coveralls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coveralls/subscriptions","organizations_url":"https://api.github.com/users/coveralls/orgs","repos_url":"https://api.github.com/users/coveralls/repos","events_url":"https://api.github.com/users/coveralls/events{/privacy}","received_events_url":"https://api.github.com/users/coveralls/received_events","type":"User","site_admin":false},"created_at":"2015-04-21T14:51:51Z","updated_at":"2015-04-21T14:51:51Z","body":"\n[![Coverage Status](https://coveralls.io/builds/2387340/badge)](https://coveralls.io/builds/2387340)\n\nCoverage increased (+0.04%) to 78.37% when pulling **a41175568d157b9eabaa51f06be7e49dfff6ee14 on puffnfresh:optimisation/inline-semigroupoid-arr** into **fa59cf19a67f05533c27ffe2beb7c792ec675b0f on purescript:master**.\n"}}