{"action":"created","comment":{"url":"https://api.github.com/repos/haskell-servant/servant/pulls/comments/76246674","id":76246674,"diff_hunk":"@@ -0,0 +1,123 @@\n+{-# LANGUAGE DataKinds #-}\n+{-# LANGUAGE KindSignatures #-}\n+{-# LANGUAGE PolyKinds #-}\n+{-# LANGUAGE TypeFamilies #-}\n+{-# LANGUAGE TypeOperators #-}\n+{-# LANGUAGE UndecidableInstances #-}\n+module Servant.API.TypeLevel where\n+\n+import GHC.Exts(Constraint)\n+import Servant.API.Capture ( Capture, CaptureAll )\n+import Servant.API.ReqBody ( ReqBody )\n+import Servant.API.QueryParam ( QueryParam, QueryParams, QueryFlag )\n+import Servant.API.Header ( Header )\n+import Servant.API.Verbs ( Verb )\n+import Servant.API.Sub ( type (:>) )\n+import Servant.API.Alternative ( type (:<|>) )\n+\n+-- * API predicates\n+\n+-- | Flatten API into a list of endpoints.\n+type family Endpoints api where\n+  Endpoints (a :<|> b) = AppendList (Endpoints a) (Endpoints b)\n+  Endpoints (e :> a)   = MapSub e (Endpoints a)\n+  Endpoints a = '[a]\n+\n+-- ** Lax inclusion\n+\n+-- | You may use this type family to tell the type checker that your custom\n+-- type may be skipped as part of a link. This is useful for things like\n+-- @'QueryParam'@ that are optional in a URI and do not affect them if they are\n+-- omitted.\n+--\n+-- >>> data CustomThing\n+-- >>> type instance IsElem' e (CustomThing :> s) = IsElem e s\n+--\n+-- Note that @'IsElem'@ is called, which will mutually recurse back to @'IsElem''@","path":"servant/src/Servant/API/TypeLevel.hs","position":36,"original_position":36,"commit_id":"37c4bb8038b0b9ea69fcc1edd8157f6180e827f0","original_commit_id":"37c4bb8038b0b9ea69fcc1edd8157f6180e827f0","user":{"login":"jkarni","id":1657498,"avatar_url":"https://avatars.githubusercontent.com/u/1657498?v=3","gravatar_id":"","url":"https://api.github.com/users/jkarni","html_url":"https://github.com/jkarni","followers_url":"https://api.github.com/users/jkarni/followers","following_url":"https://api.github.com/users/jkarni/following{/other_user}","gists_url":"https://api.github.com/users/jkarni/gists{/gist_id}","starred_url":"https://api.github.com/users/jkarni/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkarni/subscriptions","organizations_url":"https://api.github.com/users/jkarni/orgs","repos_url":"https://api.github.com/users/jkarni/repos","events_url":"https://api.github.com/users/jkarni/events{/privacy}","received_events_url":"https://api.github.com/users/jkarni/received_events","type":"User","site_admin":false},"body":"I think a few things here are not used in the repo. Should I remove them all?","created_at":"2016-08-25T13:53:50Z","updated_at":"2016-08-25T13:53:50Z","html_url":"https://github.com/haskell-servant/servant/pull/345#discussion_r76246674","pull_request_url":"https://api.github.com/repos/haskell-servant/servant/pulls/345","_links":{"self":{"href":"https://api.github.com/repos/haskell-servant/servant/pulls/comments/76246674"},"html":{"href":"https://github.com/haskell-servant/servant/pull/345#discussion_r76246674"},"pull_request":{"href":"https://api.github.com/repos/haskell-servant/servant/pulls/345"}}},"pull_request":{"url":"https://api.github.com/repos/haskell-servant/servant/pulls/345","id":56618275,"html_url":"https://github.com/haskell-servant/servant/pull/345","diff_url":"https://github.com/haskell-servant/servant/pull/345.diff","patch_url":"https://github.com/haskell-servant/servant/pull/345.patch","issue_url":"https://api.github.com/repos/haskell-servant/servant/issues/345","number":345,"state":"open","locked":false,"title":"Servant.API.TypeLevel","user":{"login":"fizruk","id":686582,"avatar_url":"https://avatars.githubusercontent.com/u/686582?v=3","gravatar_id":"","url":"https://api.github.com/users/fizruk","html_url":"https://github.com/fizruk","followers_url":"https://api.github.com/users/fizruk/followers","following_url":"https://api.github.com/users/fizruk/following{/other_user}","gists_url":"https://api.github.com/users/fizruk/gists{/gist_id}","starred_url":"https://api.github.com/users/fizruk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fizruk/subscriptions","organizations_url":"https://api.github.com/users/fizruk/orgs","repos_url":"https://api.github.com/users/fizruk/repos","events_url":"https://api.github.com/users/fizruk/events{/privacy}","received_events_url":"https://api.github.com/users/fizruk/received_events","type":"User","site_admin":false},"body":"Closes #305.\r\n\r\nI need to write some tests, otherwise, should be complete.","created_at":"2016-01-20T14:58:21Z","updated_at":"2016-08-25T13:53:50Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8755627062e4b7680efebb57f3191629c7f79e42","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/haskell-servant/servant/pulls/345/commits","review_comments_url":"https://api.github.com/repos/haskell-servant/servant/pulls/345/comments","review_comment_url":"https://api.github.com/repos/haskell-servant/servant/pulls/comments{/number}","comments_url":"https://api.github.com/repos/haskell-servant/servant/issues/345/comments","statuses_url":"https://api.github.com/repos/haskell-servant/servant/statuses/37c4bb8038b0b9ea69fcc1edd8157f6180e827f0","head":{"label":"haskell-servant:fizruk/type-level-#305","ref":"fizruk/type-level-#305","sha":"37c4bb8038b0b9ea69fcc1edd8157f6180e827f0","user":{"login":"haskell-servant","id":10049283,"avatar_url":"https://avatars.githubusercontent.com/u/10049283?v=3","gravatar_id":"","url":"https://api.github.com/users/haskell-servant","html_url":"https://github.com/haskell-servant","followers_url":"https://api.github.com/users/haskell-servant/followers","following_url":"https://api.github.com/users/haskell-servant/following{/other_user}","gists_url":"https://api.github.com/users/haskell-servant/gists{/gist_id}","starred_url":"https://api.github.com/users/haskell-servant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haskell-servant/subscriptions","organizations_url":"https://api.github.com/users/haskell-servant/orgs","repos_url":"https://api.github.com/users/haskell-servant/repos","events_url":"https://api.github.com/users/haskell-servant/events{/privacy}","received_events_url":"https://api.github.com/users/haskell-servant/received_events","type":"Organization","site_admin":false},"repo":{"id":27440142,"name":"servant","full_name":"haskell-servant/servant","owner":{"login":"haskell-servant","id":10049283,"avatar_url":"https://avatars.githubusercontent.com/u/10049283?v=3","gravatar_id":"","url":"https://api.github.com/users/haskell-servant","html_url":"https://github.com/haskell-servant","followers_url":"https://api.github.com/users/haskell-servant/followers","following_url":"https://api.github.com/users/haskell-servant/following{/other_user}","gists_url":"https://api.github.com/users/haskell-servant/gists{/gist_id}","starred_url":"https://api.github.com/users/haskell-servant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haskell-servant/subscriptions","organizations_url":"https://api.github.com/users/haskell-servant/orgs","repos_url":"https://api.github.com/users/haskell-servant/repos","events_url":"https://api.github.com/users/haskell-servant/events{/privacy}","received_events_url":"https://api.github.com/users/haskell-servant/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/haskell-servant/servant","description":"Main repository for the servant libraries. Web API combinators, with servers, clients and documentation","fork":false,"url":"https://api.github.com/repos/haskell-servant/servant","forks_url":"https://api.github.com/repos/haskell-servant/servant/forks","keys_url":"https://api.github.com/repos/haskell-servant/servant/keys{/key_id}","collaborators_url":"https://api.github.com/repos/haskell-servant/servant/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/haskell-servant/servant/teams","hooks_url":"https://api.github.com/repos/haskell-servant/servant/hooks","issue_events_url":"https://api.github.com/repos/haskell-servant/servant/issues/events{/number}","events_url":"https://api.github.com/repos/haskell-servant/servant/events","assignees_url":"https://api.github.com/repos/haskell-servant/servant/assignees{/user}","branches_url":"https://api.github.com/repos/haskell-servant/servant/branches{/branch}","tags_url":"https://api.github.com/repos/haskell-servant/servant/tags","blobs_url":"https://api.github.com/repos/haskell-servant/servant/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/haskell-servant/servant/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/haskell-servant/servant/git/refs{/sha}","trees_url":"https://api.github.com/repos/haskell-servant/servant/git/trees{/sha}","statuses_url":"https://api.github.com/repos/haskell-servant/servant/statuses/{sha}","languages_url":"https://api.github.com/repos/haskell-servant/servant/languages","stargazers_url":"https://api.github.com/repos/haskell-servant/servant/stargazers","contributors_url":"https://api.github.com/repos/haskell-servant/servant/contributors","subscribers_url":"https://api.github.com/repos/haskell-servant/servant/subscribers","subscription_url":"https://api.github.com/repos/haskell-servant/servant/subscription","commits_url":"https://api.github.com/repos/haskell-servant/servant/commits{/sha}","git_commits_url":"https://api.github.com/repos/haskell-servant/servant/git/commits{/sha}","comments_url":"https://api.github.com/repos/haskell-servant/servant/comments{/number}","issue_comment_url":"https://api.github.com/repos/haskell-servant/servant/issues/comments{/number}","contents_url":"https://api.github.com/repos/haskell-servant/servant/contents/{+path}","compare_url":"https://api.github.com/repos/haskell-servant/servant/compare/{base}...{head}","merges_url":"https://api.github.com/repos/haskell-servant/servant/merges","archive_url":"https://api.github.com/repos/haskell-servant/servant/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/haskell-servant/servant/downloads","issues_url":"https://api.github.com/repos/haskell-servant/servant/issues{/number}","pulls_url":"https://api.github.com/repos/haskell-servant/servant/pulls{/number}","milestones_url":"https://api.github.com/repos/haskell-servant/servant/milestones{/number}","notifications_url":"https://api.github.com/repos/haskell-servant/servant/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/haskell-servant/servant/labels{/name}","releases_url":"https://api.github.com/repos/haskell-servant/servant/releases{/id}","deployments_url":"https://api.github.com/repos/haskell-servant/servant/deployments","created_at":"2014-12-02T15:58:17Z","updated_at":"2016-08-24T14:05:56Z","pushed_at":"2016-08-22T15:46:00Z","git_url":"git://github.com/haskell-servant/servant.git","ssh_url":"git@github.com:haskell-servant/servant.git","clone_url":"https://github.com/haskell-servant/servant.git","svn_url":"https://github.com/haskell-servant/servant","homepage":"http://haskell-servant.readthedocs.org/","size":5538,"stargazers_count":577,"watchers_count":577,"language":"Haskell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":116,"mirror_url":null,"open_issues_count":75,"forks":116,"open_issues":75,"watchers":577,"default_branch":"master"}},"base":{"label":"haskell-servant:master","ref":"master","sha":"23493d982d0ec591f115bc4a0414fbc0dd7b61e7","user":{"login":"haskell-servant","id":10049283,"avatar_url":"https://avatars.githubusercontent.com/u/10049283?v=3","gravatar_id":"","url":"https://api.github.com/users/haskell-servant","html_url":"https://github.com/haskell-servant","followers_url":"https://api.github.com/users/haskell-servant/followers","following_url":"https://api.github.com/users/haskell-servant/following{/other_user}","gists_url":"https://api.github.com/users/haskell-servant/gists{/gist_id}","starred_url":"https://api.github.com/users/haskell-servant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haskell-servant/subscriptions","organizations_url":"https://api.github.com/users/haskell-servant/orgs","repos_url":"https://api.github.com/users/haskell-servant/repos","events_url":"https://api.github.com/users/haskell-servant/events{/privacy}","received_events_url":"https://api.github.com/users/haskell-servant/received_events","type":"Organization","site_admin":false},"repo":{"id":27440142,"name":"servant","full_name":"haskell-servant/servant","owner":{"login":"haskell-servant","id":10049283,"avatar_url":"https://avatars.githubusercontent.com/u/10049283?v=3","gravatar_id":"","url":"https://api.github.com/users/haskell-servant","html_url":"https://github.com/haskell-servant","followers_url":"https://api.github.com/users/haskell-servant/followers","following_url":"https://api.github.com/users/haskell-servant/following{/other_user}","gists_url":"https://api.github.com/users/haskell-servant/gists{/gist_id}","starred_url":"https://api.github.com/users/haskell-servant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haskell-servant/subscriptions","organizations_url":"https://api.github.com/users/haskell-servant/orgs","repos_url":"https://api.github.com/users/haskell-servant/repos","events_url":"https://api.github.com/users/haskell-servant/events{/privacy}","received_events_url":"https://api.github.com/users/haskell-servant/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/haskell-servant/servant","description":"Main repository for the servant libraries. Web API combinators, with servers, clients and documentation","fork":false,"url":"https://api.github.com/repos/haskell-servant/servant","forks_url":"https://api.github.com/repos/haskell-servant/servant/forks","keys_url":"https://api.github.com/repos/haskell-servant/servant/keys{/key_id}","collaborators_url":"https://api.github.com/repos/haskell-servant/servant/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/haskell-servant/servant/teams","hooks_url":"https://api.github.com/repos/haskell-servant/servant/hooks","issue_events_url":"https://api.github.com/repos/haskell-servant/servant/issues/events{/number}","events_url":"https://api.github.com/repos/haskell-servant/servant/events","assignees_url":"https://api.github.com/repos/haskell-servant/servant/assignees{/user}","branches_url":"https://api.github.com/repos/haskell-servant/servant/branches{/branch}","tags_url":"https://api.github.com/repos/haskell-servant/servant/tags","blobs_url":"https://api.github.com/repos/haskell-servant/servant/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/haskell-servant/servant/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/haskell-servant/servant/git/refs{/sha}","trees_url":"https://api.github.com/repos/haskell-servant/servant/git/trees{/sha}","statuses_url":"https://api.github.com/repos/haskell-servant/servant/statuses/{sha}","languages_url":"https://api.github.com/repos/haskell-servant/servant/languages","stargazers_url":"https://api.github.com/repos/haskell-servant/servant/stargazers","contributors_url":"https://api.github.com/repos/haskell-servant/servant/contributors","subscribers_url":"https://api.github.com/repos/haskell-servant/servant/subscribers","subscription_url":"https://api.github.com/repos/haskell-servant/servant/subscription","commits_url":"https://api.github.com/repos/haskell-servant/servant/commits{/sha}","git_commits_url":"https://api.github.com/repos/haskell-servant/servant/git/commits{/sha}","comments_url":"https://api.github.com/repos/haskell-servant/servant/comments{/number}","issue_comment_url":"https://api.github.com/repos/haskell-servant/servant/issues/comments{/number}","contents_url":"https://api.github.com/repos/haskell-servant/servant/contents/{+path}","compare_url":"https://api.github.com/repos/haskell-servant/servant/compare/{base}...{head}","merges_url":"https://api.github.com/repos/haskell-servant/servant/merges","archive_url":"https://api.github.com/repos/haskell-servant/servant/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/haskell-servant/servant/downloads","issues_url":"https://api.github.com/repos/haskell-servant/servant/issues{/number}","pulls_url":"https://api.github.com/repos/haskell-servant/servant/pulls{/number}","milestones_url":"https://api.github.com/repos/haskell-servant/servant/milestones{/number}","notifications_url":"https://api.github.com/repos/haskell-servant/servant/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/haskell-servant/servant/labels{/name}","releases_url":"https://api.github.com/repos/haskell-servant/servant/releases{/id}","deployments_url":"https://api.github.com/repos/haskell-servant/servant/deployments","created_at":"2014-12-02T15:58:17Z","updated_at":"2016-08-24T14:05:56Z","pushed_at":"2016-08-22T15:46:00Z","git_url":"git://github.com/haskell-servant/servant.git","ssh_url":"git@github.com:haskell-servant/servant.git","clone_url":"https://github.com/haskell-servant/servant.git","svn_url":"https://github.com/haskell-servant/servant","homepage":"http://haskell-servant.readthedocs.org/","size":5538,"stargazers_count":577,"watchers_count":577,"language":"Haskell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":116,"mirror_url":null,"open_issues_count":75,"forks":116,"open_issues":75,"watchers":577,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/haskell-servant/servant/pulls/345"},"html":{"href":"https://github.com/haskell-servant/servant/pull/345"},"issue":{"href":"https://api.github.com/repos/haskell-servant/servant/issues/345"},"comments":{"href":"https://api.github.com/repos/haskell-servant/servant/issues/345/comments"},"review_comments":{"href":"https://api.github.com/repos/haskell-servant/servant/pulls/345/comments"},"review_comment":{"href":"https://api.github.com/repos/haskell-servant/servant/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/haskell-servant/servant/pulls/345/commits"},"statuses":{"href":"https://api.github.com/repos/haskell-servant/servant/statuses/37c4bb8038b0b9ea69fcc1edd8157f6180e827f0"}}}}
{"actor":{"display_login":"jkarni"}}