{"issue":{"state":"closed","pull_request":{"diff_url":null,"html_url":null,"patch_url":null},"milestone":{"state":"open","open_issues":5,"url":"https://api.github.com/repos/justinethier/husk-scheme/milestones/9","due_on":null,"title":"Version 3.4.x","description":"","creator":{"avatar_url":"https://secure.gravatar.com/avatar/a81805e545b4996b36c7d011a5249b2c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"a81805e545b4996b36c7d011a5249b2c","url":"https://api.github.com/users/justinethier","login":"justinethier","id":153000},"number":9,"closed_issues":1,"created_at":"2011-11-09T03:53:34Z"},"user":{"avatar_url":"https://secure.gravatar.com/avatar/a81805e545b4996b36c7d011a5249b2c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"a81805e545b4996b36c7d011a5249b2c","url":"https://api.github.com/users/justinethier","login":"justinethier","id":153000},"labels":[],"assignee":null,"updated_at":"2011-11-15T03:08:01Z","comments":2,"closed_at":"2011-11-15T03:08:01Z","url":"https://api.github.com/repos/justinethier/husk-scheme/issues/56","body":"The following evaluates to 3:\r\n\r\n    (letrec ((z 12)) (let () (let ((z 1) (y 2)) (+ z y))) z)\r\n\r\nIt should evaluate to 12, taking macro hygiene into account...","html_url":"https://github.com/justinethier/husk-scheme/issues/56","title":"Expanded letrec expression does not include the correct code","number":56,"id":2206132,"created_at":"2011-11-11T03:55:16Z"},"action":"created","comment":{"user":{"avatar_url":"https://secure.gravatar.com/avatar/a81805e545b4996b36c7d011a5249b2c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"a81805e545b4996b36c7d011a5249b2c","url":"https://api.github.com/users/justinethier","login":"justinethier","id":153000},"updated_at":"2011-11-15T03:08:01Z","url":"https://api.github.com/repos/justinethier/husk-scheme/issues/comments/2740376","body":"As per the previous checkin comment, the problem is that the ellipsisIndex value is incremented each time a pattern variable is matched during transformation. So for example, if there is one pattern variable the index value would become `[0]` the variable would be matched and then the code would attempt to match a variable at `[1]`. But the value is not found, so the code will attempt to continue on with an index value of `[0]` (again, for example). \r\n\r\nThe problem is that, since that ellipsis is now finished, the index value should be completely removed. That is, we should keep transforming using an ellipsis index value of `[]` in this example. So the code uses `init` to skip the last value that was used.","id":2740376,"created_at":"2011-11-15T03:08:01Z"}}