{"action":"closed","number":2,"pull_request":{"url":"https://api.github.com/repos/stew/adjunction/pulls/2","id":69255414,"html_url":"https://github.com/stew/adjunction/pull/2","diff_url":"https://github.com/stew/adjunction/pull/2.diff","patch_url":"https://github.com/stew/adjunction/pull/2.patch","issue_url":"https://api.github.com/repos/stew/adjunction/issues/2","number":2,"state":"closed","locked":false,"title":"add Store comonad definition","user":{"login":"cxfreeio","id":8990115,"avatar_url":"https://avatars.githubusercontent.com/u/8990115?v=3","gravatar_id":"","url":"https://api.github.com/users/cxfreeio","html_url":"https://github.com/cxfreeio","followers_url":"https://api.github.com/users/cxfreeio/followers","following_url":"https://api.github.com/users/cxfreeio/following{/other_user}","gists_url":"https://api.github.com/users/cxfreeio/gists{/gist_id}","starred_url":"https://api.github.com/users/cxfreeio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cxfreeio/subscriptions","organizations_url":"https://api.github.com/users/cxfreeio/orgs","repos_url":"https://api.github.com/users/cxfreeio/repos","events_url":"https://api.github.com/users/cxfreeio/events{/privacy}","received_events_url":"https://api.github.com/users/cxfreeio/received_events","type":"User","site_admin":false},"body":"@stew Hey, I played around with the \"partially-applied lens\" interpretation of Store, trying to find an analogous (dual?) definition of `twoInParallel`. I'm unsure what the signatures should be, but my guess is something similar to:\r\n\r\n```scala\r\n// (`F` stands for the type of the focus of the lens)\r\ntype Storeful[F1,A,B] = (F1, F1 => A) => B\r\ntype Storeful[F2,A,C] = (F2, F2 => A) => C\r\ntype ComposedStore[F1, F2, A] => R = (F1, (F2, F2 => (F1 => A))) => R\r\ndef twoInParallel[A, F1, F2, B, C, R](sf1: Storeful[F1, A, B],\r\n                                        sf2: Storeful[F2, A, C],\r\n                                        f: (B, C) => R): ComposedStore[F1, F2, A] => R = ???\r\n```\r\nwhich might be interpreted as \"given two ways of extracting values from a lens for a structure of type A, and a way of combining the values, we can return a way of extracting an R value from a \"bi-lens\" (dunno what to call it) for structure A. Not sure if this interpretation is meaningful or useful though.\r\n\r\nAny rate, I've added a definition for `Store` arising from the composition of the functors \"the other way around\".\r\n\r\nEdit: added `type` keyword.","created_at":"2016-05-07T22:57:08Z","updated_at":"2016-05-09T20:42:48Z","closed_at":"2016-05-09T20:42:48Z","merged_at":"2016-05-09T20:42:48Z","merge_commit_sha":"00131013c2e509045b9d3903053b239589e9f4f5","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/stew/adjunction/pulls/2/commits","review_comments_url":"https://api.github.com/repos/stew/adjunction/pulls/2/comments","review_comment_url":"https://api.github.com/repos/stew/adjunction/pulls/comments{/number}","comments_url":"https://api.github.com/repos/stew/adjunction/issues/2/comments","statuses_url":"https://api.github.com/repos/stew/adjunction/statuses/501f3aa6e6f94a6c5a253934b92eb5f49d060530","head":{"label":"cxfreeio:master","ref":"master","sha":"501f3aa6e6f94a6c5a253934b92eb5f49d060530","user":{"login":"cxfreeio","id":8990115,"avatar_url":"https://avatars.githubusercontent.com/u/8990115?v=3","gravatar_id":"","url":"https://api.github.com/users/cxfreeio","html_url":"https://github.com/cxfreeio","followers_url":"https://api.github.com/users/cxfreeio/followers","following_url":"https://api.github.com/users/cxfreeio/following{/other_user}","gists_url":"https://api.github.com/users/cxfreeio/gists{/gist_id}","starred_url":"https://api.github.com/users/cxfreeio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cxfreeio/subscriptions","organizations_url":"https://api.github.com/users/cxfreeio/orgs","repos_url":"https://api.github.com/users/cxfreeio/repos","events_url":"https://api.github.com/users/cxfreeio/events{/privacy}","received_events_url":"https://api.github.com/users/cxfreeio/received_events","type":"User","site_admin":false},"repo":{"id":58286970,"name":"adjunction","full_name":"cxfreeio/adjunction","owner":{"login":"cxfreeio","id":8990115,"avatar_url":"https://avatars.githubusercontent.com/u/8990115?v=3","gravatar_id":"","url":"https://api.github.com/users/cxfreeio","html_url":"https://github.com/cxfreeio","followers_url":"https://api.github.com/users/cxfreeio/followers","following_url":"https://api.github.com/users/cxfreeio/following{/other_user}","gists_url":"https://api.github.com/users/cxfreeio/gists{/gist_id}","starred_url":"https://api.github.com/users/cxfreeio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cxfreeio/subscriptions","organizations_url":"https://api.github.com/users/cxfreeio/orgs","repos_url":"https://api.github.com/users/cxfreeio/repos","events_url":"https://api.github.com/users/cxfreeio/events{/privacy}","received_events_url":"https://api.github.com/users/cxfreeio/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cxfreeio/adjunction","description":"","fork":true,"url":"https://api.github.com/repos/cxfreeio/adjunction","forks_url":"https://api.github.com/repos/cxfreeio/adjunction/forks","keys_url":"https://api.github.com/repos/cxfreeio/adjunction/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cxfreeio/adjunction/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cxfreeio/adjunction/teams","hooks_url":"https://api.github.com/repos/cxfreeio/adjunction/hooks","issue_events_url":"https://api.github.com/repos/cxfreeio/adjunction/issues/events{/number}","events_url":"https://api.github.com/repos/cxfreeio/adjunction/events","assignees_url":"https://api.github.com/repos/cxfreeio/adjunction/assignees{/user}","branches_url":"https://api.github.com/repos/cxfreeio/adjunction/branches{/branch}","tags_url":"https://api.github.com/repos/cxfreeio/adjunction/tags","blobs_url":"https://api.github.com/repos/cxfreeio/adjunction/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cxfreeio/adjunction/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cxfreeio/adjunction/git/refs{/sha}","trees_url":"https://api.github.com/repos/cxfreeio/adjunction/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cxfreeio/adjunction/statuses/{sha}","languages_url":"https://api.github.com/repos/cxfreeio/adjunction/languages","stargazers_url":"https://api.github.com/repos/cxfreeio/adjunction/stargazers","contributors_url":"https://api.github.com/repos/cxfreeio/adjunction/contributors","subscribers_url":"https://api.github.com/repos/cxfreeio/adjunction/subscribers","subscription_url":"https://api.github.com/repos/cxfreeio/adjunction/subscription","commits_url":"https://api.github.com/repos/cxfreeio/adjunction/commits{/sha}","git_commits_url":"https://api.github.com/repos/cxfreeio/adjunction/git/commits{/sha}","comments_url":"https://api.github.com/repos/cxfreeio/adjunction/comments{/number}","issue_comment_url":"https://api.github.com/repos/cxfreeio/adjunction/issues/comments{/number}","contents_url":"https://api.github.com/repos/cxfreeio/adjunction/contents/{+path}","compare_url":"https://api.github.com/repos/cxfreeio/adjunction/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cxfreeio/adjunction/merges","archive_url":"https://api.github.com/repos/cxfreeio/adjunction/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cxfreeio/adjunction/downloads","issues_url":"https://api.github.com/repos/cxfreeio/adjunction/issues{/number}","pulls_url":"https://api.github.com/repos/cxfreeio/adjunction/pulls{/number}","milestones_url":"https://api.github.com/repos/cxfreeio/adjunction/milestones{/number}","notifications_url":"https://api.github.com/repos/cxfreeio/adjunction/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cxfreeio/adjunction/labels{/name}","releases_url":"https://api.github.com/repos/cxfreeio/adjunction/releases{/id}","deployments_url":"https://api.github.com/repos/cxfreeio/adjunction/deployments","created_at":"2016-05-07T22:29:15Z","updated_at":"2016-05-07T22:29:16Z","pushed_at":"2016-05-07T22:38:24Z","git_url":"git://github.com/cxfreeio/adjunction.git","ssh_url":"git@github.com:cxfreeio/adjunction.git","clone_url":"https://github.com/cxfreeio/adjunction.git","svn_url":"https://github.com/cxfreeio/adjunction","homepage":null,"size":7,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"stew:master","ref":"master","sha":"cb946e5b1661e1d7ecae1b6348391400f0b3603d","user":{"login":"stew","id":66772,"avatar_url":"https://avatars.githubusercontent.com/u/66772?v=3","gravatar_id":"","url":"https://api.github.com/users/stew","html_url":"https://github.com/stew","followers_url":"https://api.github.com/users/stew/followers","following_url":"https://api.github.com/users/stew/following{/other_user}","gists_url":"https://api.github.com/users/stew/gists{/gist_id}","starred_url":"https://api.github.com/users/stew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stew/subscriptions","organizations_url":"https://api.github.com/users/stew/orgs","repos_url":"https://api.github.com/users/stew/repos","events_url":"https://api.github.com/users/stew/events{/privacy}","received_events_url":"https://api.github.com/users/stew/received_events","type":"User","site_admin":false},"repo":{"id":55674373,"name":"adjunction","full_name":"stew/adjunction","owner":{"login":"stew","id":66772,"avatar_url":"https://avatars.githubusercontent.com/u/66772?v=3","gravatar_id":"","url":"https://api.github.com/users/stew","html_url":"https://github.com/stew","followers_url":"https://api.github.com/users/stew/followers","following_url":"https://api.github.com/users/stew/following{/other_user}","gists_url":"https://api.github.com/users/stew/gists{/gist_id}","starred_url":"https://api.github.com/users/stew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stew/subscriptions","organizations_url":"https://api.github.com/users/stew/orgs","repos_url":"https://api.github.com/users/stew/repos","events_url":"https://api.github.com/users/stew/events{/privacy}","received_events_url":"https://api.github.com/users/stew/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/stew/adjunction","description":"","fork":false,"url":"https://api.github.com/repos/stew/adjunction","forks_url":"https://api.github.com/repos/stew/adjunction/forks","keys_url":"https://api.github.com/repos/stew/adjunction/keys{/key_id}","collaborators_url":"https://api.github.com/repos/stew/adjunction/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/stew/adjunction/teams","hooks_url":"https://api.github.com/repos/stew/adjunction/hooks","issue_events_url":"https://api.github.com/repos/stew/adjunction/issues/events{/number}","events_url":"https://api.github.com/repos/stew/adjunction/events","assignees_url":"https://api.github.com/repos/stew/adjunction/assignees{/user}","branches_url":"https://api.github.com/repos/stew/adjunction/branches{/branch}","tags_url":"https://api.github.com/repos/stew/adjunction/tags","blobs_url":"https://api.github.com/repos/stew/adjunction/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/stew/adjunction/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/stew/adjunction/git/refs{/sha}","trees_url":"https://api.github.com/repos/stew/adjunction/git/trees{/sha}","statuses_url":"https://api.github.com/repos/stew/adjunction/statuses/{sha}","languages_url":"https://api.github.com/repos/stew/adjunction/languages","stargazers_url":"https://api.github.com/repos/stew/adjunction/stargazers","contributors_url":"https://api.github.com/repos/stew/adjunction/contributors","subscribers_url":"https://api.github.com/repos/stew/adjunction/subscribers","subscription_url":"https://api.github.com/repos/stew/adjunction/subscription","commits_url":"https://api.github.com/repos/stew/adjunction/commits{/sha}","git_commits_url":"https://api.github.com/repos/stew/adjunction/git/commits{/sha}","comments_url":"https://api.github.com/repos/stew/adjunction/comments{/number}","issue_comment_url":"https://api.github.com/repos/stew/adjunction/issues/comments{/number}","contents_url":"https://api.github.com/repos/stew/adjunction/contents/{+path}","compare_url":"https://api.github.com/repos/stew/adjunction/compare/{base}...{head}","merges_url":"https://api.github.com/repos/stew/adjunction/merges","archive_url":"https://api.github.com/repos/stew/adjunction/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/stew/adjunction/downloads","issues_url":"https://api.github.com/repos/stew/adjunction/issues{/number}","pulls_url":"https://api.github.com/repos/stew/adjunction/pulls{/number}","milestones_url":"https://api.github.com/repos/stew/adjunction/milestones{/number}","notifications_url":"https://api.github.com/repos/stew/adjunction/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/stew/adjunction/labels{/name}","releases_url":"https://api.github.com/repos/stew/adjunction/releases{/id}","deployments_url":"https://api.github.com/repos/stew/adjunction/deployments","created_at":"2016-04-07T07:44:07Z","updated_at":"2016-05-09T19:39:56Z","pushed_at":"2016-05-09T20:42:48Z","git_url":"git://github.com/stew/adjunction.git","ssh_url":"git@github.com:stew/adjunction.git","clone_url":"https://github.com/stew/adjunction.git","svn_url":"https://github.com/stew/adjunction","homepage":null,"size":7,"stargazers_count":3,"watchers_count":3,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":3,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/stew/adjunction/pulls/2"},"html":{"href":"https://github.com/stew/adjunction/pull/2"},"issue":{"href":"https://api.github.com/repos/stew/adjunction/issues/2"},"comments":{"href":"https://api.github.com/repos/stew/adjunction/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/stew/adjunction/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/stew/adjunction/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/stew/adjunction/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/stew/adjunction/statuses/501f3aa6e6f94a6c5a253934b92eb5f49d060530"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"stew","id":66772,"avatar_url":"https://avatars.githubusercontent.com/u/66772?v=3","gravatar_id":"","url":"https://api.github.com/users/stew","html_url":"https://github.com/stew","followers_url":"https://api.github.com/users/stew/followers","following_url":"https://api.github.com/users/stew/following{/other_user}","gists_url":"https://api.github.com/users/stew/gists{/gist_id}","starred_url":"https://api.github.com/users/stew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stew/subscriptions","organizations_url":"https://api.github.com/users/stew/orgs","repos_url":"https://api.github.com/users/stew/repos","events_url":"https://api.github.com/users/stew/events{/privacy}","received_events_url":"https://api.github.com/users/stew/received_events","type":"User","site_admin":false},"comments":0,"review_comments":0,"commits":1,"additions":31,"deletions":0,"changed_files":1}}