{"action":"created","comment":{"url":"https://api.github.com/repos/emmalanguage/emma/pulls/comments/115051094","pull_request_review_id":36556914,"id":115051094,"diff_hunk":"@@ -0,0 +1,307 @@\n+/*\n+ * Copyright © 2014 TU Berlin (emma@dima.tu-berlin.de)\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ *     http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+package org.emmalanguage\n+package compiler.lang.opt\n+\n+import api._\n+import api.backend.LocalOps\n+import compiler.BaseCompilerSpec\n+\n+class FoldGroupFusionSpec extends BaseCompilerSpec {\n+\n+  import compiler._\n+  import UniverseImplicits._\n+\n+  val testPipeline: u.Expr[Any] => u.Tree =\n+    pipeline(typeCheck = true)(\n+      Core.lift,\n+      tree => time(FoldGroupFusion.foldGroupFusion(tree), \"foldGroupFusion\")\n+    ) compose (_.tree)\n+\n+  lazy val liftPipeline: u.Expr[Any] => u.Tree = {\n+    pipeline(typeCheck = true)(Core.lift)\n+  } compose (_.tree)\n+\n+  val us = DataBag((1 to 100).map(u => (u, u * u, u * u * u)))\n+  val _1 = (x: (Int, Int, Int)) => x._1\n+  val _2 = (x: (Int, Int, Int)) => x._2\n+\n+  \"applies on folds\" - {\n+    \"with a static algebra\" in {\n+      val act = testPipeline(u.reify {\n+        val _1: this._1.type = this._1\n+        val _2: this._2.type = this._2\n+        val us: this.us.type = this.us\n+\n+        val gr1 = us.groupBy(_1)\n+        val rs1 = for (g <- gr1) yield {\n+          val key1 = g.key\n+          val vls1 = g.values\n+          val agg1 = vls1.fold(alg.Size)\n+          val res1 = (key1, agg1)\n+          res1\n+        }\n+\n+        val gr2 = us.groupBy(_2)\n+        val rs2 = for (g <- gr2) yield {\n+          val key2 = g.key\n+          val vls2 = g.values\n+          val agg2 = vls2.fold(alg.Size)\n+          val res2 = (key2, agg2)\n+          res2\n+        }\n+\n+        val rs = (rs1, rs2)\n+        rs\n+      })\n+\n+      val exp = liftPipeline(u.reify {\n+        val _1: this._1.type = this._1\n+        val _2: this._2.type = this._2\n+        val us: this.us.type = this.us\n+\n+        val gr1 = LocalOps.foldGroup(us, _1, alg.Size)\n+        val rs1 = for (g <- gr1) yield {\n+          val key1 = g.key\n+          val agg1 = g.values\n+          val res1 = (key1, agg1)\n+          res1\n+        }\n+\n+        val gr2 = LocalOps.foldGroup(us, _2, alg.Size)\n+        val rs2 = for (g <- gr2) yield {\n+          val key2 = g.key\n+          val agg2 = g.values\n+          val res2 = (key2, agg2)\n+          res2\n+        }\n+\n+        val rs = (rs1, rs2)\n+        rs\n+      })\n+\n+      act shouldBe alphaEqTo(exp)\n+    }\n+\n+    \"with independent dynamic algebras\" in {\n+      val act = testPipeline(u.reify {\n+        val or = Ordering.Int\n+        val _1: this._1.type = this._1\n+        val _2: this._2.type = this._2\n+        val us: this.us.type = this.us\n+\n+        val pj1 = (x: (Int, Int, Int)) => x._1\n+        val pj2 = (x: (Int, Int, Int)) => x._2\n+        val pj3 = (x: (Int, Int, Int)) => x._3\n+\n+        val gr1 = us.groupBy(_1)\n+        val rs1 = for (g <- gr1) yield {\n+          val al11 = alg.Min(or)\n+          val al12 = alg.Min(or)\n+          val al13 = alg.Min(or)\n+          val al14 = alg.Map(pj1, al11)\n+          val al15 = alg.Map(pj2, al12)\n+          val al16 = alg.Map(pj3, al13)\n+          val al17 = alg.Alg3(al14, al15, al16)\n+\n+          val key1 = g.key\n+          val vls1 = g.values\n+          val agg1 = vls1.fold(al17)\n+          val gt11 = agg1._1\n+          val gt12 = agg1._2\n+          val gt13 = agg1._3\n+          val res1 = (key1, gt11, gt12, gt13)\n+          res1\n+        }\n+\n+        val gr2 = us.groupBy(_2)\n+        val rs2 = for (g <- gr2) yield {\n+          val al21 = alg.Max(or)\n+          val al22 = alg.Max(or)\n+          val al23 = alg.Map(pj1, al21)\n+          val al24 = alg.Map(pj2, al22)\n+          val al25 = alg.Alg2(al23, al24)\n+\n+          val key2 = g.key\n+          val vls2 = g.values\n+          val agg3 = vls2.fold(al25)\n+          val gt21 = agg3._1\n+          val gt22 = agg3._2\n+          val res2 = (key2, gt21, gt22)\n+          res2\n+        }\n+\n+        val rs = (rs1, rs2)\n+        rs\n+      })\n+\n+      val exp = liftPipeline(u.reify {\n+        val or = Ordering.Int\n+        val _1: this._1.type = this._1\n+        val _2: this._2.type = this._2\n+        val us: this.us.type = this.us\n+\n+        val pj1 = (x: (Int, Int, Int)) => x._1\n+        val pj2 = (x: (Int, Int, Int)) => x._2\n+        val pj3 = (x: (Int, Int, Int)) => x._3\n+\n+        val al11 = alg.Min(or)\n+        val al12 = alg.Min(or)\n+        val al13 = alg.Min(or)\n+        val al14 = alg.Map(pj1, al11)\n+        val al15 = alg.Map(pj2, al12)\n+        val al16 = alg.Map(pj3, al13)\n+        val al17 = alg.Alg3(al14, al15, al16)\n+        val gr1 = LocalOps.foldGroup(us, _1, al17)\n+        val rs1 = for (g <- gr1) yield {\n+          val key1 = g.key\n+          val agg1 = g.values\n+          val gt11 = agg1._1\n+          val gt12 = agg1._2\n+          val gt13 = agg1._3\n+          val res1 = (key1, gt11, gt12, gt13)\n+          res1\n+        }\n+\n+        val al21 = alg.Max(or)\n+        val al22 = alg.Max(or)\n+        val al23 = alg.Map(pj1, al21)\n+        val al24 = alg.Map(pj2, al22)\n+        val al25 = alg.Alg2(al23, al24)\n+        val gr2 = LocalOps.foldGroup(us, _2, al25)\n+        val rs2 = for (g <- gr2) yield {\n+          val key2 = g.key\n+          val agg3 = g.values\n+          val gt21 = agg3._1\n+          val gt22 = agg3._2\n+          val res2 = (key2, gt21, gt22)\n+          res2\n+        }\n+\n+        val rs = (rs1, rs2)\n+        rs\n+      })\n+\n+      act shouldBe alphaEqTo(exp)\n+    }\n+  }\n+\n+  \"dos not apply on folds depending on the group value\" in {","path":"emma-language/src/test/scala/org/emmalanguage/compiler/lang/opt/FoldGroupFusionSpec.scala","position":202,"original_position":202,"commit_id":"1affadd4af2b8b389f73622707409edfe999277a","original_commit_id":"1affadd4af2b8b389f73622707409edfe999277a","user":{"login":"joroKr21","id":2218841,"avatar_url":"https://avatars3.githubusercontent.com/u/2218841?v=3","gravatar_id":"","url":"https://api.github.com/users/joroKr21","html_url":"https://github.com/joroKr21","followers_url":"https://api.github.com/users/joroKr21/followers","following_url":"https://api.github.com/users/joroKr21/following{/other_user}","gists_url":"https://api.github.com/users/joroKr21/gists{/gist_id}","starred_url":"https://api.github.com/users/joroKr21/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joroKr21/subscriptions","organizations_url":"https://api.github.com/users/joroKr21/orgs","repos_url":"https://api.github.com/users/joroKr21/repos","events_url":"https://api.github.com/users/joroKr21/events{/privacy}","received_events_url":"https://api.github.com/users/joroKr21/received_events","type":"User","site_admin":false},"body":"Typo:\r\n> do[e]s not","created_at":"2017-05-05T17:41:22Z","updated_at":"2017-05-05T17:42:20Z","html_url":"https://github.com/emmalanguage/emma/pull/338#discussion_r115051094","pull_request_url":"https://api.github.com/repos/emmalanguage/emma/pulls/338","_links":{"self":{"href":"https://api.github.com/repos/emmalanguage/emma/pulls/comments/115051094"},"html":{"href":"https://github.com/emmalanguage/emma/pull/338#discussion_r115051094"},"pull_request":{"href":"https://api.github.com/repos/emmalanguage/emma/pulls/338"}}},"pull_request":{"url":"https://api.github.com/repos/emmalanguage/emma/pulls/338","id":118331648,"html_url":"https://github.com/emmalanguage/emma/pull/338","diff_url":"https://github.com/emmalanguage/emma/pull/338.diff","patch_url":"https://github.com/emmalanguage/emma/pull/338.patch","issue_url":"https://api.github.com/repos/emmalanguage/emma/issues/338","number":338,"state":"open","locked":false,"title":"Added `foldGroupFuion` optimizing rewrite.","user":{"login":"aalexandrov","id":1071946,"avatar_url":"https://avatars2.githubusercontent.com/u/1071946?v=3","gravatar_id":"","url":"https://api.github.com/users/aalexandrov","html_url":"https://github.com/aalexandrov","followers_url":"https://api.github.com/users/aalexandrov/followers","following_url":"https://api.github.com/users/aalexandrov/following{/other_user}","gists_url":"https://api.github.com/users/aalexandrov/gists{/gist_id}","starred_url":"https://api.github.com/users/aalexandrov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aalexandrov/subscriptions","organizations_url":"https://api.github.com/users/aalexandrov/orgs","repos_url":"https://api.github.com/users/aalexandrov/repos","events_url":"https://api.github.com/users/aalexandrov/events{/privacy}","received_events_url":"https://api.github.com/users/aalexandrov/received_events","type":"User","site_admin":false},"body":"Depends on #329.\r\nResolves #312.","created_at":"2017-04-30T23:33:56Z","updated_at":"2017-05-05T17:42:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"49dbaad3257982ef6be7be96346ff156401afabc","assignee":{"login":"aalexandrov","id":1071946,"avatar_url":"https://avatars2.githubusercontent.com/u/1071946?v=3","gravatar_id":"","url":"https://api.github.com/users/aalexandrov","html_url":"https://github.com/aalexandrov","followers_url":"https://api.github.com/users/aalexandrov/followers","following_url":"https://api.github.com/users/aalexandrov/following{/other_user}","gists_url":"https://api.github.com/users/aalexandrov/gists{/gist_id}","starred_url":"https://api.github.com/users/aalexandrov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aalexandrov/subscriptions","organizations_url":"https://api.github.com/users/aalexandrov/orgs","repos_url":"https://api.github.com/users/aalexandrov/repos","events_url":"https://api.github.com/users/aalexandrov/events{/privacy}","received_events_url":"https://api.github.com/users/aalexandrov/received_events","type":"User","site_admin":false},"assignees":[{"login":"aalexandrov","id":1071946,"avatar_url":"https://avatars2.githubusercontent.com/u/1071946?v=3","gravatar_id":"","url":"https://api.github.com/users/aalexandrov","html_url":"https://github.com/aalexandrov","followers_url":"https://api.github.com/users/aalexandrov/followers","following_url":"https://api.github.com/users/aalexandrov/following{/other_user}","gists_url":"https://api.github.com/users/aalexandrov/gists{/gist_id}","starred_url":"https://api.github.com/users/aalexandrov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aalexandrov/subscriptions","organizations_url":"https://api.github.com/users/aalexandrov/orgs","repos_url":"https://api.github.com/users/aalexandrov/repos","events_url":"https://api.github.com/users/aalexandrov/events{/privacy}","received_events_url":"https://api.github.com/users/aalexandrov/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/emmalanguage/emma/milestones/46","html_url":"https://github.com/emmalanguage/emma/milestone/46","labels_url":"https://api.github.com/repos/emmalanguage/emma/milestones/46/labels","id":2369023,"number":46,"title":"May 2017","description":"","creator":{"login":"aalexandrov","id":1071946,"avatar_url":"https://avatars2.githubusercontent.com/u/1071946?v=3","gravatar_id":"","url":"https://api.github.com/users/aalexandrov","html_url":"https://github.com/aalexandrov","followers_url":"https://api.github.com/users/aalexandrov/followers","following_url":"https://api.github.com/users/aalexandrov/following{/other_user}","gists_url":"https://api.github.com/users/aalexandrov/gists{/gist_id}","starred_url":"https://api.github.com/users/aalexandrov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aalexandrov/subscriptions","organizations_url":"https://api.github.com/users/aalexandrov/orgs","repos_url":"https://api.github.com/users/aalexandrov/repos","events_url":"https://api.github.com/users/aalexandrov/events{/privacy}","received_events_url":"https://api.github.com/users/aalexandrov/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":0,"state":"open","created_at":"2017-03-07T12:35:56Z","updated_at":"2017-05-04T10:26:44Z","due_on":"2017-05-31T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/emmalanguage/emma/pulls/338/commits","review_comments_url":"https://api.github.com/repos/emmalanguage/emma/pulls/338/comments","review_comment_url":"https://api.github.com/repos/emmalanguage/emma/pulls/comments{/number}","comments_url":"https://api.github.com/repos/emmalanguage/emma/issues/338/comments","statuses_url":"https://api.github.com/repos/emmalanguage/emma/statuses/1affadd4af2b8b389f73622707409edfe999277a","head":{"label":"aalexandrov:fold_group_fusion","ref":"fold_group_fusion","sha":"1affadd4af2b8b389f73622707409edfe999277a","user":{"login":"aalexandrov","id":1071946,"avatar_url":"https://avatars2.githubusercontent.com/u/1071946?v=3","gravatar_id":"","url":"https://api.github.com/users/aalexandrov","html_url":"https://github.com/aalexandrov","followers_url":"https://api.github.com/users/aalexandrov/followers","following_url":"https://api.github.com/users/aalexandrov/following{/other_user}","gists_url":"https://api.github.com/users/aalexandrov/gists{/gist_id}","starred_url":"https://api.github.com/users/aalexandrov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aalexandrov/subscriptions","organizations_url":"https://api.github.com/users/aalexandrov/orgs","repos_url":"https://api.github.com/users/aalexandrov/repos","events_url":"https://api.github.com/users/aalexandrov/events{/privacy}","received_events_url":"https://api.github.com/users/aalexandrov/received_events","type":"User","site_admin":false},"repo":{"id":62880932,"name":"emma","full_name":"aalexandrov/emma","owner":{"login":"aalexandrov","id":1071946,"avatar_url":"https://avatars2.githubusercontent.com/u/1071946?v=3","gravatar_id":"","url":"https://api.github.com/users/aalexandrov","html_url":"https://github.com/aalexandrov","followers_url":"https://api.github.com/users/aalexandrov/followers","following_url":"https://api.github.com/users/aalexandrov/following{/other_user}","gists_url":"https://api.github.com/users/aalexandrov/gists{/gist_id}","starred_url":"https://api.github.com/users/aalexandrov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aalexandrov/subscriptions","organizations_url":"https://api.github.com/users/aalexandrov/orgs","repos_url":"https://api.github.com/users/aalexandrov/repos","events_url":"https://api.github.com/users/aalexandrov/events{/privacy}","received_events_url":"https://api.github.com/users/aalexandrov/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/aalexandrov/emma","description":"A quotation-based Scala DSL for scalable data analysis.","fork":true,"url":"https://api.github.com/repos/aalexandrov/emma","forks_url":"https://api.github.com/repos/aalexandrov/emma/forks","keys_url":"https://api.github.com/repos/aalexandrov/emma/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aalexandrov/emma/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aalexandrov/emma/teams","hooks_url":"https://api.github.com/repos/aalexandrov/emma/hooks","issue_events_url":"https://api.github.com/repos/aalexandrov/emma/issues/events{/number}","events_url":"https://api.github.com/repos/aalexandrov/emma/events","assignees_url":"https://api.github.com/repos/aalexandrov/emma/assignees{/user}","branches_url":"https://api.github.com/repos/aalexandrov/emma/branches{/branch}","tags_url":"https://api.github.com/repos/aalexandrov/emma/tags","blobs_url":"https://api.github.com/repos/aalexandrov/emma/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aalexandrov/emma/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aalexandrov/emma/git/refs{/sha}","trees_url":"https://api.github.com/repos/aalexandrov/emma/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aalexandrov/emma/statuses/{sha}","languages_url":"https://api.github.com/repos/aalexandrov/emma/languages","stargazers_url":"https://api.github.com/repos/aalexandrov/emma/stargazers","contributors_url":"https://api.github.com/repos/aalexandrov/emma/contributors","subscribers_url":"https://api.github.com/repos/aalexandrov/emma/subscribers","subscription_url":"https://api.github.com/repos/aalexandrov/emma/subscription","commits_url":"https://api.github.com/repos/aalexandrov/emma/commits{/sha}","git_commits_url":"https://api.github.com/repos/aalexandrov/emma/git/commits{/sha}","comments_url":"https://api.github.com/repos/aalexandrov/emma/comments{/number}","issue_comment_url":"https://api.github.com/repos/aalexandrov/emma/issues/comments{/number}","contents_url":"https://api.github.com/repos/aalexandrov/emma/contents/{+path}","compare_url":"https://api.github.com/repos/aalexandrov/emma/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aalexandrov/emma/merges","archive_url":"https://api.github.com/repos/aalexandrov/emma/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aalexandrov/emma/downloads","issues_url":"https://api.github.com/repos/aalexandrov/emma/issues{/number}","pulls_url":"https://api.github.com/repos/aalexandrov/emma/pulls{/number}","milestones_url":"https://api.github.com/repos/aalexandrov/emma/milestones{/number}","notifications_url":"https://api.github.com/repos/aalexandrov/emma/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aalexandrov/emma/labels{/name}","releases_url":"https://api.github.com/repos/aalexandrov/emma/releases{/id}","deployments_url":"https://api.github.com/repos/aalexandrov/emma/deployments","created_at":"2016-07-08T10:30:33Z","updated_at":"2017-04-13T00:14:04Z","pushed_at":"2017-05-05T17:02:09Z","git_url":"git://github.com/aalexandrov/emma.git","ssh_url":"git@github.com:aalexandrov/emma.git","clone_url":"https://github.com/aalexandrov/emma.git","svn_url":"https://github.com/aalexandrov/emma","homepage":"http://emma-language.org","size":8407,"stargazers_count":1,"watchers_count":1,"language":"Scala","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"emmalanguage:master","ref":"master","sha":"d6625372b88ec8dda333b36b8e89831dd42ef9e0","user":{"login":"emmalanguage","id":18483401,"avatar_url":"https://avatars3.githubusercontent.com/u/18483401?v=3","gravatar_id":"","url":"https://api.github.com/users/emmalanguage","html_url":"https://github.com/emmalanguage","followers_url":"https://api.github.com/users/emmalanguage/followers","following_url":"https://api.github.com/users/emmalanguage/following{/other_user}","gists_url":"https://api.github.com/users/emmalanguage/gists{/gist_id}","starred_url":"https://api.github.com/users/emmalanguage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emmalanguage/subscriptions","organizations_url":"https://api.github.com/users/emmalanguage/orgs","repos_url":"https://api.github.com/users/emmalanguage/repos","events_url":"https://api.github.com/users/emmalanguage/events{/privacy}","received_events_url":"https://api.github.com/users/emmalanguage/received_events","type":"Organization","site_admin":false},"repo":{"id":17373846,"name":"emma","full_name":"emmalanguage/emma","owner":{"login":"emmalanguage","id":18483401,"avatar_url":"https://avatars3.githubusercontent.com/u/18483401?v=3","gravatar_id":"","url":"https://api.github.com/users/emmalanguage","html_url":"https://github.com/emmalanguage","followers_url":"https://api.github.com/users/emmalanguage/followers","following_url":"https://api.github.com/users/emmalanguage/following{/other_user}","gists_url":"https://api.github.com/users/emmalanguage/gists{/gist_id}","starred_url":"https://api.github.com/users/emmalanguage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emmalanguage/subscriptions","organizations_url":"https://api.github.com/users/emmalanguage/orgs","repos_url":"https://api.github.com/users/emmalanguage/repos","events_url":"https://api.github.com/users/emmalanguage/events{/privacy}","received_events_url":"https://api.github.com/users/emmalanguage/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/emmalanguage/emma","description":"A quotation-based Scala DSL for scalable data analysis.","fork":false,"url":"https://api.github.com/repos/emmalanguage/emma","forks_url":"https://api.github.com/repos/emmalanguage/emma/forks","keys_url":"https://api.github.com/repos/emmalanguage/emma/keys{/key_id}","collaborators_url":"https://api.github.com/repos/emmalanguage/emma/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/emmalanguage/emma/teams","hooks_url":"https://api.github.com/repos/emmalanguage/emma/hooks","issue_events_url":"https://api.github.com/repos/emmalanguage/emma/issues/events{/number}","events_url":"https://api.github.com/repos/emmalanguage/emma/events","assignees_url":"https://api.github.com/repos/emmalanguage/emma/assignees{/user}","branches_url":"https://api.github.com/repos/emmalanguage/emma/branches{/branch}","tags_url":"https://api.github.com/repos/emmalanguage/emma/tags","blobs_url":"https://api.github.com/repos/emmalanguage/emma/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/emmalanguage/emma/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/emmalanguage/emma/git/refs{/sha}","trees_url":"https://api.github.com/repos/emmalanguage/emma/git/trees{/sha}","statuses_url":"https://api.github.com/repos/emmalanguage/emma/statuses/{sha}","languages_url":"https://api.github.com/repos/emmalanguage/emma/languages","stargazers_url":"https://api.github.com/repos/emmalanguage/emma/stargazers","contributors_url":"https://api.github.com/repos/emmalanguage/emma/contributors","subscribers_url":"https://api.github.com/repos/emmalanguage/emma/subscribers","subscription_url":"https://api.github.com/repos/emmalanguage/emma/subscription","commits_url":"https://api.github.com/repos/emmalanguage/emma/commits{/sha}","git_commits_url":"https://api.github.com/repos/emmalanguage/emma/git/commits{/sha}","comments_url":"https://api.github.com/repos/emmalanguage/emma/comments{/number}","issue_comment_url":"https://api.github.com/repos/emmalanguage/emma/issues/comments{/number}","contents_url":"https://api.github.com/repos/emmalanguage/emma/contents/{+path}","compare_url":"https://api.github.com/repos/emmalanguage/emma/compare/{base}...{head}","merges_url":"https://api.github.com/repos/emmalanguage/emma/merges","archive_url":"https://api.github.com/repos/emmalanguage/emma/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/emmalanguage/emma/downloads","issues_url":"https://api.github.com/repos/emmalanguage/emma/issues{/number}","pulls_url":"https://api.github.com/repos/emmalanguage/emma/pulls{/number}","milestones_url":"https://api.github.com/repos/emmalanguage/emma/milestones{/number}","notifications_url":"https://api.github.com/repos/emmalanguage/emma/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/emmalanguage/emma/labels{/name}","releases_url":"https://api.github.com/repos/emmalanguage/emma/releases{/id}","deployments_url":"https://api.github.com/repos/emmalanguage/emma/deployments","created_at":"2014-03-03T17:30:30Z","updated_at":"2017-04-23T09:40:56Z","pushed_at":"2017-05-05T17:02:11Z","git_url":"git://github.com/emmalanguage/emma.git","ssh_url":"git@github.com:emmalanguage/emma.git","clone_url":"https://github.com/emmalanguage/emma.git","svn_url":"https://github.com/emmalanguage/emma","homepage":"http://emma-language.org","size":8295,"stargazers_count":13,"watchers_count":13,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":10,"mirror_url":null,"open_issues_count":40,"forks":10,"open_issues":40,"watchers":13,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/emmalanguage/emma/pulls/338"},"html":{"href":"https://github.com/emmalanguage/emma/pull/338"},"issue":{"href":"https://api.github.com/repos/emmalanguage/emma/issues/338"},"comments":{"href":"https://api.github.com/repos/emmalanguage/emma/issues/338/comments"},"review_comments":{"href":"https://api.github.com/repos/emmalanguage/emma/pulls/338/comments"},"review_comment":{"href":"https://api.github.com/repos/emmalanguage/emma/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/emmalanguage/emma/pulls/338/commits"},"statuses":{"href":"https://api.github.com/repos/emmalanguage/emma/statuses/1affadd4af2b8b389f73622707409edfe999277a"}}}}
{"actor":{"display_login":"joroKr21"}}