{"action":"closed","number":728,"pull_request":{"url":"https://api.github.com/repos/hylang/hy/pulls/728","id":26429565,"html_url":"https://github.com/hylang/hy/pull/728","diff_url":"https://github.com/hylang/hy/pull/728.diff","patch_url":"https://github.com/hylang/hy/pull/728.patch","issue_url":"https://api.github.com/repos/hylang/hy/issues/728","number":728,"state":"closed","locked":false,"title":"Proper tail recursion","user":{"login":"Tritlo","id":1667287,"avatar_url":"https://avatars.githubusercontent.com/u/1667287?v=3","gravatar_id":"","url":"https://api.github.com/users/Tritlo","html_url":"https://github.com/Tritlo","followers_url":"https://api.github.com/users/Tritlo/followers","following_url":"https://api.github.com/users/Tritlo/following{/other_user}","gists_url":"https://api.github.com/users/Tritlo/gists{/gist_id}","starred_url":"https://api.github.com/users/Tritlo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tritlo/subscriptions","organizations_url":"https://api.github.com/users/Tritlo/orgs","repos_url":"https://api.github.com/users/Tritlo/repos","events_url":"https://api.github.com/users/Tritlo/events{/privacy}","received_events_url":"https://api.github.com/users/Tritlo/received_events","type":"User","site_admin":false},"body":"I've added support for Proper tail recursion in Hy. It's optional, and can be enabled with an\r\n\r\n    (import [__future__ [TailRec]])\r\n\r\nin the Hy source where it is needed. Benefits can be seen for example in the tests, where we can use *mutual recursive* functions (not just self recurring, as the current loop macro implements) on much larger   values without hitting a recursion depth exceeded exception.\r\n\r\nNeeds a little more work before it can be in Hy proper, as it does not work while bootstrapping (since the TailCall mechanism itself is written in Hy).","created_at":"2014-12-21T16:38:53Z","updated_at":"2015-12-12T17:33:13Z","closed_at":"2015-12-12T17:33:13Z","merged_at":null,"merge_commit_sha":"262ccf8d4b9944c4904c06425f92eeda35da2d23","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/hylang/hy/pulls/728/commits","review_comments_url":"https://api.github.com/repos/hylang/hy/pulls/728/comments","review_comment_url":"https://api.github.com/repos/hylang/hy/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hylang/hy/issues/728/comments","statuses_url":"https://api.github.com/repos/hylang/hy/statuses/28047b85fec6528dcecf7a0cce8e6154c85a9923","head":{"label":"Tritlo:master","ref":"master","sha":"28047b85fec6528dcecf7a0cce8e6154c85a9923","user":{"login":"Tritlo","id":1667287,"avatar_url":"https://avatars.githubusercontent.com/u/1667287?v=3","gravatar_id":"","url":"https://api.github.com/users/Tritlo","html_url":"https://github.com/Tritlo","followers_url":"https://api.github.com/users/Tritlo/followers","following_url":"https://api.github.com/users/Tritlo/following{/other_user}","gists_url":"https://api.github.com/users/Tritlo/gists{/gist_id}","starred_url":"https://api.github.com/users/Tritlo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tritlo/subscriptions","organizations_url":"https://api.github.com/users/Tritlo/orgs","repos_url":"https://api.github.com/users/Tritlo/repos","events_url":"https://api.github.com/users/Tritlo/events{/privacy}","received_events_url":"https://api.github.com/users/Tritlo/received_events","type":"User","site_admin":false},"repo":{"id":27633073,"name":"hy","full_name":"Tritlo/hy","owner":{"login":"Tritlo","id":1667287,"avatar_url":"https://avatars.githubusercontent.com/u/1667287?v=3","gravatar_id":"","url":"https://api.github.com/users/Tritlo","html_url":"https://github.com/Tritlo","followers_url":"https://api.github.com/users/Tritlo/followers","following_url":"https://api.github.com/users/Tritlo/following{/other_user}","gists_url":"https://api.github.com/users/Tritlo/gists{/gist_id}","starred_url":"https://api.github.com/users/Tritlo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tritlo/subscriptions","organizations_url":"https://api.github.com/users/Tritlo/orgs","repos_url":"https://api.github.com/users/Tritlo/repos","events_url":"https://api.github.com/users/Tritlo/events{/privacy}","received_events_url":"https://api.github.com/users/Tritlo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Tritlo/hy","description":"A Lisp Dialect of Python","fork":true,"url":"https://api.github.com/repos/Tritlo/hy","forks_url":"https://api.github.com/repos/Tritlo/hy/forks","keys_url":"https://api.github.com/repos/Tritlo/hy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Tritlo/hy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Tritlo/hy/teams","hooks_url":"https://api.github.com/repos/Tritlo/hy/hooks","issue_events_url":"https://api.github.com/repos/Tritlo/hy/issues/events{/number}","events_url":"https://api.github.com/repos/Tritlo/hy/events","assignees_url":"https://api.github.com/repos/Tritlo/hy/assignees{/user}","branches_url":"https://api.github.com/repos/Tritlo/hy/branches{/branch}","tags_url":"https://api.github.com/repos/Tritlo/hy/tags","blobs_url":"https://api.github.com/repos/Tritlo/hy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Tritlo/hy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Tritlo/hy/git/refs{/sha}","trees_url":"https://api.github.com/repos/Tritlo/hy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Tritlo/hy/statuses/{sha}","languages_url":"https://api.github.com/repos/Tritlo/hy/languages","stargazers_url":"https://api.github.com/repos/Tritlo/hy/stargazers","contributors_url":"https://api.github.com/repos/Tritlo/hy/contributors","subscribers_url":"https://api.github.com/repos/Tritlo/hy/subscribers","subscription_url":"https://api.github.com/repos/Tritlo/hy/subscription","commits_url":"https://api.github.com/repos/Tritlo/hy/commits{/sha}","git_commits_url":"https://api.github.com/repos/Tritlo/hy/git/commits{/sha}","comments_url":"https://api.github.com/repos/Tritlo/hy/comments{/number}","issue_comment_url":"https://api.github.com/repos/Tritlo/hy/issues/comments{/number}","contents_url":"https://api.github.com/repos/Tritlo/hy/contents/{+path}","compare_url":"https://api.github.com/repos/Tritlo/hy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Tritlo/hy/merges","archive_url":"https://api.github.com/repos/Tritlo/hy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Tritlo/hy/downloads","issues_url":"https://api.github.com/repos/Tritlo/hy/issues{/number}","pulls_url":"https://api.github.com/repos/Tritlo/hy/pulls{/number}","milestones_url":"https://api.github.com/repos/Tritlo/hy/milestones{/number}","notifications_url":"https://api.github.com/repos/Tritlo/hy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Tritlo/hy/labels{/name}","releases_url":"https://api.github.com/repos/Tritlo/hy/releases{/id}","created_at":"2014-12-06T12:07:07Z","updated_at":"2015-02-05T16:48:07Z","pushed_at":"2015-07-23T01:34:55Z","git_url":"git://github.com/Tritlo/hy.git","ssh_url":"git@github.com:Tritlo/hy.git","clone_url":"https://github.com/Tritlo/hy.git","svn_url":"https://github.com/Tritlo/hy","homepage":"http://hylang.org/","size":2960,"stargazers_count":0,"watchers_count":0,"language":"Python","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":"hylang:master","ref":"master","sha":"f4afb0ca7efd76cb3bc4a99bc3c719c1ef96584a","user":{"login":"hylang","id":4141508,"avatar_url":"https://avatars.githubusercontent.com/u/4141508?v=3","gravatar_id":"","url":"https://api.github.com/users/hylang","html_url":"https://github.com/hylang","followers_url":"https://api.github.com/users/hylang/followers","following_url":"https://api.github.com/users/hylang/following{/other_user}","gists_url":"https://api.github.com/users/hylang/gists{/gist_id}","starred_url":"https://api.github.com/users/hylang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hylang/subscriptions","organizations_url":"https://api.github.com/users/hylang/orgs","repos_url":"https://api.github.com/users/hylang/repos","events_url":"https://api.github.com/users/hylang/events{/privacy}","received_events_url":"https://api.github.com/users/hylang/received_events","type":"Organization","site_admin":false},"repo":{"id":7184072,"name":"hy","full_name":"hylang/hy","owner":{"login":"hylang","id":4141508,"avatar_url":"https://avatars.githubusercontent.com/u/4141508?v=3","gravatar_id":"","url":"https://api.github.com/users/hylang","html_url":"https://github.com/hylang","followers_url":"https://api.github.com/users/hylang/followers","following_url":"https://api.github.com/users/hylang/following{/other_user}","gists_url":"https://api.github.com/users/hylang/gists{/gist_id}","starred_url":"https://api.github.com/users/hylang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hylang/subscriptions","organizations_url":"https://api.github.com/users/hylang/orgs","repos_url":"https://api.github.com/users/hylang/repos","events_url":"https://api.github.com/users/hylang/events{/privacy}","received_events_url":"https://api.github.com/users/hylang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hylang/hy","description":"A dialect of Lisp that's embedded in Python","fork":false,"url":"https://api.github.com/repos/hylang/hy","forks_url":"https://api.github.com/repos/hylang/hy/forks","keys_url":"https://api.github.com/repos/hylang/hy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hylang/hy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hylang/hy/teams","hooks_url":"https://api.github.com/repos/hylang/hy/hooks","issue_events_url":"https://api.github.com/repos/hylang/hy/issues/events{/number}","events_url":"https://api.github.com/repos/hylang/hy/events","assignees_url":"https://api.github.com/repos/hylang/hy/assignees{/user}","branches_url":"https://api.github.com/repos/hylang/hy/branches{/branch}","tags_url":"https://api.github.com/repos/hylang/hy/tags","blobs_url":"https://api.github.com/repos/hylang/hy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hylang/hy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hylang/hy/git/refs{/sha}","trees_url":"https://api.github.com/repos/hylang/hy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hylang/hy/statuses/{sha}","languages_url":"https://api.github.com/repos/hylang/hy/languages","stargazers_url":"https://api.github.com/repos/hylang/hy/stargazers","contributors_url":"https://api.github.com/repos/hylang/hy/contributors","subscribers_url":"https://api.github.com/repos/hylang/hy/subscribers","subscription_url":"https://api.github.com/repos/hylang/hy/subscription","commits_url":"https://api.github.com/repos/hylang/hy/commits{/sha}","git_commits_url":"https://api.github.com/repos/hylang/hy/git/commits{/sha}","comments_url":"https://api.github.com/repos/hylang/hy/comments{/number}","issue_comment_url":"https://api.github.com/repos/hylang/hy/issues/comments{/number}","contents_url":"https://api.github.com/repos/hylang/hy/contents/{+path}","compare_url":"https://api.github.com/repos/hylang/hy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hylang/hy/merges","archive_url":"https://api.github.com/repos/hylang/hy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hylang/hy/downloads","issues_url":"https://api.github.com/repos/hylang/hy/issues{/number}","pulls_url":"https://api.github.com/repos/hylang/hy/pulls{/number}","milestones_url":"https://api.github.com/repos/hylang/hy/milestones{/number}","notifications_url":"https://api.github.com/repos/hylang/hy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hylang/hy/labels{/name}","releases_url":"https://api.github.com/repos/hylang/hy/releases{/id}","created_at":"2012-12-15T21:20:51Z","updated_at":"2015-12-11T23:37:36Z","pushed_at":"2015-12-10T05:49:20Z","git_url":"git://github.com/hylang/hy.git","ssh_url":"git@github.com:hylang/hy.git","clone_url":"https://github.com/hylang/hy.git","svn_url":"https://github.com/hylang/hy","homepage":"http://hylang.org/","size":4521,"stargazers_count":1256,"watchers_count":1256,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":162,"mirror_url":null,"open_issues_count":158,"forks":162,"open_issues":158,"watchers":1256,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hylang/hy/pulls/728"},"html":{"href":"https://github.com/hylang/hy/pull/728"},"issue":{"href":"https://api.github.com/repos/hylang/hy/issues/728"},"comments":{"href":"https://api.github.com/repos/hylang/hy/issues/728/comments"},"review_comments":{"href":"https://api.github.com/repos/hylang/hy/pulls/728/comments"},"review_comment":{"href":"https://api.github.com/repos/hylang/hy/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hylang/hy/pulls/728/commits"},"statuses":{"href":"https://api.github.com/repos/hylang/hy/statuses/28047b85fec6528dcecf7a0cce8e6154c85a9923"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":7,"review_comments":1,"commits":9,"additions":169,"deletions":0,"changed_files":7}}