{"action":"created","comment":{"url":"https://api.github.com/repos/euslisp/ansi-test/pulls/comments/195457760","pull_request_review_id":128831033,"id":195457760,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NTQ1Nzc2MA==","diff_hunk":"@@ -70,15 +73,17 @@\n ;; \t   ,value-form))))\n \n (defmacro multiple-value-bind (varlist value-form &rest body)\n+  \"Sets each variable in varlist to respective value returned by value-form and subsequently executes body\"\n   `(multiple-value-call #'(lambda (,@varlist)\n-                               ,@body)\n-                           ,value-form))\n+                            ,@body)\n+     ,value-form))\n \n ;; (defmacro multiple-value-setq (varlist value-form)\n ;;   (if varlist\n ;;       `(values (setf (values ,@varlist) ,value-form))\n ;;       `(values ,value-form)))\n \n (defmacro multiple-value-prog1 (form &rest forms)\n-  `(progn ,@forms ,form))\n-     \n+  \"Executes form and forms, yielding the value of form\"\n+  (setq mv-interface::is-mv-on t)\n+  `(prog1 ,form ,@forms (setq mv-interface::is-mv-on nil)))","path":"auxiliary/eus-multiple-values.l","position":null,"original_position":70,"commit_id":"c2ff9fbc9215942fc09dc32f0eaa439b76ed5f9b","original_commit_id":"c2ff9fbc9215942fc09dc32f0eaa439b76ed5f9b","user":{"login":"ericlesaquiles","id":6992106,"node_id":"MDQ6VXNlcjY5OTIxMDY=","avatar_url":"https://avatars0.githubusercontent.com/u/6992106?v=4","gravatar_id":"","url":"https://api.github.com/users/ericlesaquiles","html_url":"https://github.com/ericlesaquiles","followers_url":"https://api.github.com/users/ericlesaquiles/followers","following_url":"https://api.github.com/users/ericlesaquiles/following{/other_user}","gists_url":"https://api.github.com/users/ericlesaquiles/gists{/gist_id}","starred_url":"https://api.github.com/users/ericlesaquiles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericlesaquiles/subscriptions","organizations_url":"https://api.github.com/users/ericlesaquiles/orgs","repos_url":"https://api.github.com/users/ericlesaquiles/repos","events_url":"https://api.github.com/users/ericlesaquiles/events{/privacy}","received_events_url":"https://api.github.com/users/ericlesaquiles/received_events","type":"User","site_admin":false},"body":"Or, maybe, we could leave it defined with `progn`. It might sound strange, but that wouldn't get us incompatibility issues in the future (hopefully not, that is) and would make it work as a usual multiple-values form (return multiple values if used with the apparatus, but not otherwise).","created_at":"2018-06-14T15:00:38Z","updated_at":"2018-06-14T15:00:38Z","html_url":"https://github.com/euslisp/ansi-test/pull/11#discussion_r195457760","pull_request_url":"https://api.github.com/repos/euslisp/ansi-test/pulls/11","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/euslisp/ansi-test/pulls/comments/195457760"},"html":{"href":"https://github.com/euslisp/ansi-test/pull/11#discussion_r195457760"},"pull_request":{"href":"https://api.github.com/repos/euslisp/ansi-test/pulls/11"}},"in_reply_to_id":195358616},"pull_request":{"url":"https://api.github.com/repos/euslisp/ansi-test/pulls/11","id":193807261,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkzODA3MjYx","html_url":"https://github.com/euslisp/ansi-test/pull/11","diff_url":"https://github.com/euslisp/ansi-test/pull/11.diff","patch_url":"https://github.com/euslisp/ansi-test/pull/11.patch","issue_url":"https://api.github.com/repos/euslisp/ansi-test/issues/11","number":11,"state":"open","locked":false,"title":"Multiple values interface","user":{"login":"ericlesaquiles","id":6992106,"node_id":"MDQ6VXNlcjY5OTIxMDY=","avatar_url":"https://avatars0.githubusercontent.com/u/6992106?v=4","gravatar_id":"","url":"https://api.github.com/users/ericlesaquiles","html_url":"https://github.com/ericlesaquiles","followers_url":"https://api.github.com/users/ericlesaquiles/followers","following_url":"https://api.github.com/users/ericlesaquiles/following{/other_user}","gists_url":"https://api.github.com/users/ericlesaquiles/gists{/gist_id}","starred_url":"https://api.github.com/users/ericlesaquiles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericlesaquiles/subscriptions","organizations_url":"https://api.github.com/users/ericlesaquiles/orgs","repos_url":"https://api.github.com/users/ericlesaquiles/repos","events_url":"https://api.github.com/users/ericlesaquiles/events{/privacy}","received_events_url":"https://api.github.com/users/ericlesaquiles/received_events","type":"User","site_admin":false},"body":"Sorry it took so long. I almost forgot to push it here.\r\n\r\nThere is a rough explanation of the following code at [this blog post](https://ericlesaquiles.github.io/euslisp/2018/06/03/On-EusLisp-Multiple-Values-Return-part-II.html]) (you might want to take a look at [this blog](https://ericlesaquiles.github.io/), by the way, as there should be new posts soon) but I tried to make the code for the blog simpler, so it doesn't have all the macros and functions (but only states that they can be achieved by means of `multiple-value-call`, which is mostly true). Another difference is that the code for the blog makes use of the loop macro, which I can't do in the real code without breaking it (the code there doesn't break the loop macro because of the \"my-\" prefix, which breaks CL compatibility).\r\n\r\nIn sum, this is a modest implementation of multiple values. It has a few important differences from the common lisp specification, namely that\r\n\r\n- it doesn't supply nil values when needed;\r\n- it doesn't silently discard exceeding values when required (note that this point, along with the anterior, makes this implementation notably less flexible with respect to multiple values);\r\n- the [rules regarding the passing of multiple values](http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node95.html) were largely overlooked.\r\n\r\nHowever, if a function is defined to return multiple values but is called without  the multiple-value apparatus (that is, outside of functions or macros built with `multiple-value-call`), it returns only one value. This was thought so that operations like `(setq a (floor 4 5))`, for instance, which are constantly used, wouldn't yield too weird results (or oblige us to keep them single-valued). \r\n\r\nAs suggested, this implementation might deserve to be rethought some time soon (if there is time, of course).\r\n\r\nI'll be finishing organizing the tests related to this subject (there is a folder of tests largely on this matter, in spite of some misinformation I might have passed earlier (sorry about that)) and, if this PR is ok, will be pushing them soon.","created_at":"2018-06-10T03:46:12Z","updated_at":"2018-06-14T15:00:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"476fe3fcf6d6ba3108a8242b9238ab331e66f29b","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/euslisp/ansi-test/pulls/11/commits","review_comments_url":"https://api.github.com/repos/euslisp/ansi-test/pulls/11/comments","review_comment_url":"https://api.github.com/repos/euslisp/ansi-test/pulls/comments{/number}","comments_url":"https://api.github.com/repos/euslisp/ansi-test/issues/11/comments","statuses_url":"https://api.github.com/repos/euslisp/ansi-test/statuses/c2ff9fbc9215942fc09dc32f0eaa439b76ed5f9b","head":{"label":"ericlesaquiles:gsoc2018","ref":"gsoc2018","sha":"c2ff9fbc9215942fc09dc32f0eaa439b76ed5f9b","user":{"login":"ericlesaquiles","id":6992106,"node_id":"MDQ6VXNlcjY5OTIxMDY=","avatar_url":"https://avatars0.githubusercontent.com/u/6992106?v=4","gravatar_id":"","url":"https://api.github.com/users/ericlesaquiles","html_url":"https://github.com/ericlesaquiles","followers_url":"https://api.github.com/users/ericlesaquiles/followers","following_url":"https://api.github.com/users/ericlesaquiles/following{/other_user}","gists_url":"https://api.github.com/users/ericlesaquiles/gists{/gist_id}","starred_url":"https://api.github.com/users/ericlesaquiles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericlesaquiles/subscriptions","organizations_url":"https://api.github.com/users/ericlesaquiles/orgs","repos_url":"https://api.github.com/users/ericlesaquiles/repos","events_url":"https://api.github.com/users/ericlesaquiles/events{/privacy}","received_events_url":"https://api.github.com/users/ericlesaquiles/received_events","type":"User","site_admin":false},"repo":{"id":134340578,"node_id":"MDEwOlJlcG9zaXRvcnkxMzQzNDA1Nzg=","name":"ansi-test","full_name":"ericlesaquiles/ansi-test","owner":{"login":"ericlesaquiles","id":6992106,"node_id":"MDQ6VXNlcjY5OTIxMDY=","avatar_url":"https://avatars0.githubusercontent.com/u/6992106?v=4","gravatar_id":"","url":"https://api.github.com/users/ericlesaquiles","html_url":"https://github.com/ericlesaquiles","followers_url":"https://api.github.com/users/ericlesaquiles/followers","following_url":"https://api.github.com/users/ericlesaquiles/following{/other_user}","gists_url":"https://api.github.com/users/ericlesaquiles/gists{/gist_id}","starred_url":"https://api.github.com/users/ericlesaquiles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericlesaquiles/subscriptions","organizations_url":"https://api.github.com/users/ericlesaquiles/orgs","repos_url":"https://api.github.com/users/ericlesaquiles/repos","events_url":"https://api.github.com/users/ericlesaquiles/events{/privacy}","received_events_url":"https://api.github.com/users/ericlesaquiles/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ericlesaquiles/ansi-test","description":"ANSI Common Lisp conformity test suite. Optionally it tests some other extensions. Forked from https://gitlab.common-lisp.net/ansi-test/ansi-test","fork":true,"url":"https://api.github.com/repos/ericlesaquiles/ansi-test","forks_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/forks","keys_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/teams","hooks_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/hooks","issue_events_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/issues/events{/number}","events_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/events","assignees_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/assignees{/user}","branches_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/branches{/branch}","tags_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/tags","blobs_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/git/refs{/sha}","trees_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/statuses/{sha}","languages_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/languages","stargazers_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/stargazers","contributors_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/contributors","subscribers_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/subscribers","subscription_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/subscription","commits_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/commits{/sha}","git_commits_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/git/commits{/sha}","comments_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/comments{/number}","issue_comment_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/issues/comments{/number}","contents_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/contents/{+path}","compare_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/merges","archive_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/downloads","issues_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/issues{/number}","pulls_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/pulls{/number}","milestones_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/milestones{/number}","notifications_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/labels{/name}","releases_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/releases{/id}","deployments_url":"https://api.github.com/repos/ericlesaquiles/ansi-test/deployments","created_at":"2018-05-22T00:46:57Z","updated_at":"2018-06-13T17:45:13Z","pushed_at":"2018-06-13T17:45:12Z","git_url":"git://github.com/ericlesaquiles/ansi-test.git","ssh_url":"git@github.com:ericlesaquiles/ansi-test.git","clone_url":"https://github.com/ericlesaquiles/ansi-test.git","svn_url":"https://github.com/ericlesaquiles/ansi-test","homepage":null,"size":17356,"stargazers_count":0,"watchers_count":0,"language":"Common Lisp","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"gsoc2018"}},"base":{"label":"euslisp:gsoc2018","ref":"gsoc2018","sha":"12b35cdc152a32a079808fd7a79e2f1ae1e0f58f","user":{"login":"euslisp","id":6836610,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY4MzY2MTA=","avatar_url":"https://avatars1.githubusercontent.com/u/6836610?v=4","gravatar_id":"","url":"https://api.github.com/users/euslisp","html_url":"https://github.com/euslisp","followers_url":"https://api.github.com/users/euslisp/followers","following_url":"https://api.github.com/users/euslisp/following{/other_user}","gists_url":"https://api.github.com/users/euslisp/gists{/gist_id}","starred_url":"https://api.github.com/users/euslisp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/euslisp/subscriptions","organizations_url":"https://api.github.com/users/euslisp/orgs","repos_url":"https://api.github.com/users/euslisp/repos","events_url":"https://api.github.com/users/euslisp/events{/privacy}","received_events_url":"https://api.github.com/users/euslisp/received_events","type":"Organization","site_admin":false},"repo":{"id":132686339,"node_id":"MDEwOlJlcG9zaXRvcnkxMzI2ODYzMzk=","name":"ansi-test","full_name":"euslisp/ansi-test","owner":{"login":"euslisp","id":6836610,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY4MzY2MTA=","avatar_url":"https://avatars1.githubusercontent.com/u/6836610?v=4","gravatar_id":"","url":"https://api.github.com/users/euslisp","html_url":"https://github.com/euslisp","followers_url":"https://api.github.com/users/euslisp/followers","following_url":"https://api.github.com/users/euslisp/following{/other_user}","gists_url":"https://api.github.com/users/euslisp/gists{/gist_id}","starred_url":"https://api.github.com/users/euslisp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/euslisp/subscriptions","organizations_url":"https://api.github.com/users/euslisp/orgs","repos_url":"https://api.github.com/users/euslisp/repos","events_url":"https://api.github.com/users/euslisp/events{/privacy}","received_events_url":"https://api.github.com/users/euslisp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/euslisp/ansi-test","description":"ANSI Common Lisp conformity test suite. Optionally it tests some other extensions. Forked from https://gitlab.common-lisp.net/ansi-test/ansi-test","fork":false,"url":"https://api.github.com/repos/euslisp/ansi-test","forks_url":"https://api.github.com/repos/euslisp/ansi-test/forks","keys_url":"https://api.github.com/repos/euslisp/ansi-test/keys{/key_id}","collaborators_url":"https://api.github.com/repos/euslisp/ansi-test/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/euslisp/ansi-test/teams","hooks_url":"https://api.github.com/repos/euslisp/ansi-test/hooks","issue_events_url":"https://api.github.com/repos/euslisp/ansi-test/issues/events{/number}","events_url":"https://api.github.com/repos/euslisp/ansi-test/events","assignees_url":"https://api.github.com/repos/euslisp/ansi-test/assignees{/user}","branches_url":"https://api.github.com/repos/euslisp/ansi-test/branches{/branch}","tags_url":"https://api.github.com/repos/euslisp/ansi-test/tags","blobs_url":"https://api.github.com/repos/euslisp/ansi-test/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/euslisp/ansi-test/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/euslisp/ansi-test/git/refs{/sha}","trees_url":"https://api.github.com/repos/euslisp/ansi-test/git/trees{/sha}","statuses_url":"https://api.github.com/repos/euslisp/ansi-test/statuses/{sha}","languages_url":"https://api.github.com/repos/euslisp/ansi-test/languages","stargazers_url":"https://api.github.com/repos/euslisp/ansi-test/stargazers","contributors_url":"https://api.github.com/repos/euslisp/ansi-test/contributors","subscribers_url":"https://api.github.com/repos/euslisp/ansi-test/subscribers","subscription_url":"https://api.github.com/repos/euslisp/ansi-test/subscription","commits_url":"https://api.github.com/repos/euslisp/ansi-test/commits{/sha}","git_commits_url":"https://api.github.com/repos/euslisp/ansi-test/git/commits{/sha}","comments_url":"https://api.github.com/repos/euslisp/ansi-test/comments{/number}","issue_comment_url":"https://api.github.com/repos/euslisp/ansi-test/issues/comments{/number}","contents_url":"https://api.github.com/repos/euslisp/ansi-test/contents/{+path}","compare_url":"https://api.github.com/repos/euslisp/ansi-test/compare/{base}...{head}","merges_url":"https://api.github.com/repos/euslisp/ansi-test/merges","archive_url":"https://api.github.com/repos/euslisp/ansi-test/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/euslisp/ansi-test/downloads","issues_url":"https://api.github.com/repos/euslisp/ansi-test/issues{/number}","pulls_url":"https://api.github.com/repos/euslisp/ansi-test/pulls{/number}","milestones_url":"https://api.github.com/repos/euslisp/ansi-test/milestones{/number}","notifications_url":"https://api.github.com/repos/euslisp/ansi-test/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/euslisp/ansi-test/labels{/name}","releases_url":"https://api.github.com/repos/euslisp/ansi-test/releases{/id}","deployments_url":"https://api.github.com/repos/euslisp/ansi-test/deployments","created_at":"2018-05-09T01:45:34Z","updated_at":"2018-06-13T00:26:11Z","pushed_at":"2018-06-13T17:45:13Z","git_url":"git://github.com/euslisp/ansi-test.git","ssh_url":"git@github.com:euslisp/ansi-test.git","clone_url":"https://github.com/euslisp/ansi-test.git","svn_url":"https://github.com/euslisp/ansi-test","homepage":null,"size":17254,"stargazers_count":0,"watchers_count":0,"language":"Common Lisp","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":4,"license":null,"forks":2,"open_issues":4,"watchers":0,"default_branch":"gsoc2018"}},"_links":{"self":{"href":"https://api.github.com/repos/euslisp/ansi-test/pulls/11"},"html":{"href":"https://github.com/euslisp/ansi-test/pull/11"},"issue":{"href":"https://api.github.com/repos/euslisp/ansi-test/issues/11"},"comments":{"href":"https://api.github.com/repos/euslisp/ansi-test/issues/11/comments"},"review_comments":{"href":"https://api.github.com/repos/euslisp/ansi-test/pulls/11/comments"},"review_comment":{"href":"https://api.github.com/repos/euslisp/ansi-test/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/euslisp/ansi-test/pulls/11/commits"},"statuses":{"href":"https://api.github.com/repos/euslisp/ansi-test/statuses/c2ff9fbc9215942fc09dc32f0eaa439b76ed5f9b"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"ericlesaquiles"}}