{"action":"created","issue":{"url":"https://api.github.com/repos/brownplt/pyret-lang/issues/896","repository_url":"https://api.github.com/repos/brownplt/pyret-lang","labels_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/896/labels{/name}","comments_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/896/comments","events_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/896/events","html_url":"https://github.com/brownplt/pyret-lang/issues/896","id":181457541,"number":896,"title":"Cyclic equality cache does not respect paths","user":{"login":"jpolitz","id":119891,"avatar_url":"https://avatars.githubusercontent.com/u/119891?v=3","gravatar_id":"","url":"https://api.github.com/users/jpolitz","html_url":"https://github.com/jpolitz","followers_url":"https://api.github.com/users/jpolitz/followers","following_url":"https://api.github.com/users/jpolitz/following{/other_user}","gists_url":"https://api.github.com/users/jpolitz/gists{/gist_id}","starred_url":"https://api.github.com/users/jpolitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpolitz/subscriptions","organizations_url":"https://api.github.com/users/jpolitz/orgs","repos_url":"https://api.github.com/users/jpolitz/repos","events_url":"https://api.github.com/users/jpolitz/events{/privacy}","received_events_url":"https://api.github.com/users/jpolitz/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2016-10-06T16:03:21Z","updated_at":"2016-10-07T18:29:45Z","closed_at":null,"body":"The cyclic equality cache should not have algorithm-global state, it should have stacks of state.  If the same pair of (`===`) objects is checked once, regardless of success or failure, it is added to the cache and _stays in the cache_ for future comparisons.\r\n\r\nFor example, this program prints NotEqual and then Equal:\r\n\r\n```\r\no = {\r\n  method _equals(self, other, eq) block:\r\n    v1 = {}\r\n    v2 = {x:\"a\"}\r\n    print(eq(v1, v2))\r\n    print(eq(v1, v2))\r\n    eq(1, 1)\r\n  end\r\n}\r\no == {}\r\n```"},"comment":{"url":"https://api.github.com/repos/brownplt/pyret-lang/issues/comments/252326835","html_url":"https://github.com/brownplt/pyret-lang/issues/896#issuecomment-252326835","issue_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/896","id":252326835,"user":{"login":"blerner","id":918464,"avatar_url":"https://avatars.githubusercontent.com/u/918464?v=3","gravatar_id":"","url":"https://api.github.com/users/blerner","html_url":"https://github.com/blerner","followers_url":"https://api.github.com/users/blerner/followers","following_url":"https://api.github.com/users/blerner/following{/other_user}","gists_url":"https://api.github.com/users/blerner/gists{/gist_id}","starred_url":"https://api.github.com/users/blerner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blerner/subscriptions","organizations_url":"https://api.github.com/users/blerner/orgs","repos_url":"https://api.github.com/users/blerner/repos","events_url":"https://api.github.com/users/blerner/events{/privacy}","received_events_url":"https://api.github.com/users/blerner/received_events","type":"User","site_admin":false},"created_at":"2016-10-07T18:29:45Z","updated_at":"2016-10-07T18:29:45Z","body":"Possibility: instead of pushing `setCache: true`, could you push `setCache: the-index-where-it-was-pushed`, and have `cachePair` return the index where it was pushed?  Then the `setCachePair` won't have to do a linear search every time...?"}}
{"actor":{"display_login":"blerner"}}