{"action":"created","issue":{"url":"https://api.github.com/repos/leppie/IronScheme/issues/11","repository_url":"https://api.github.com/repos/leppie/IronScheme","labels_url":"https://api.github.com/repos/leppie/IronScheme/issues/11/labels{/name}","comments_url":"https://api.github.com/repos/leppie/IronScheme/issues/11/comments","events_url":"https://api.github.com/repos/leppie/IronScheme/issues/11/events","html_url":"https://github.com/leppie/IronScheme/issues/11","id":133564433,"number":11,"title":"Possible bug of equal? implementation","user":{"login":"christoff-buerger","id":7884278,"avatar_url":"https://avatars.githubusercontent.com/u/7884278?v=3","gravatar_id":"","url":"https://api.github.com/users/christoff-buerger","html_url":"https://github.com/christoff-buerger","followers_url":"https://api.github.com/users/christoff-buerger/followers","following_url":"https://api.github.com/users/christoff-buerger/following{/other_user}","gists_url":"https://api.github.com/users/christoff-buerger/gists{/gist_id}","starred_url":"https://api.github.com/users/christoff-buerger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christoff-buerger/subscriptions","organizations_url":"https://api.github.com/users/christoff-buerger/orgs","repos_url":"https://api.github.com/users/christoff-buerger/repos","events_url":"https://api.github.com/users/christoff-buerger/events{/privacy}","received_events_url":"https://api.github.com/users/christoff-buerger/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2016-02-14T18:25:16Z","updated_at":"2016-02-15T06:01:34Z","closed_at":null,"body":"When I run the test suite of [my _R6RS Scheme_ project](https://github.com/christoff-buerger/racr) some test cases fail, although I know other _R6RS_ systems pass (_Racket_, _Larceny_, _Petite Chez Scheme_). _GNU Guile_ fails the same test cases because of a non-_R6RS_ compliant `equal?` implementation. For this reason, I assume that _IronScheme_ might have a similar problem with `equal?`.\r\n\r\n**Short background:** My _RACR_ project is a language processor library based on reference attribute grammar controlled rewriting. One of the example languages is a Petri net interpreter supporting the composition of nets in execution. The composition is based on place fusion. Place fusion requires fixpoint semantics to find all places a place is fused with (transitive closure computation). I therefore use circular attributes to compute this reachability problem. Fixpoint semantics require a termination condition. In case of reachability, the computation should terminate when the set of reachable places does not change anymore. In that process I use `equal?` to compare circularity-caches. The content of these caches are _R6RS_ records, that themselves encode circular data structures. Since `equal?` must be well-defined for circular data structures according to the _R6RS_, this is not a problem.\r\n\r\nWhen using _IronScheme_ however, stack overflow exceptions are thrown. I got similar exceptions for _GNU Guile_, [which does not support equality tests on circular data structures](http://www.gnu.org/software/guile/manual/html_node/R6RS-Incompatibilities.html#R6RS-Incompatibilities).\r\n\r\nDoes _IronScheme_ support `equal?` on circular data structures? I use _Mono_ in _OS X_. Maybe its a _Mono_ issue?"},"comment":{"url":"https://api.github.com/repos/leppie/IronScheme/issues/comments/184076453","html_url":"https://github.com/leppie/IronScheme/issues/11#issuecomment-184076453","issue_url":"https://api.github.com/repos/leppie/IronScheme/issues/11","id":184076453,"user":{"login":"leppie","id":127666,"avatar_url":"https://avatars.githubusercontent.com/u/127666?v=3","gravatar_id":"","url":"https://api.github.com/users/leppie","html_url":"https://github.com/leppie","followers_url":"https://api.github.com/users/leppie/followers","following_url":"https://api.github.com/users/leppie/following{/other_user}","gists_url":"https://api.github.com/users/leppie/gists{/gist_id}","starred_url":"https://api.github.com/users/leppie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leppie/subscriptions","organizations_url":"https://api.github.com/users/leppie/orgs","repos_url":"https://api.github.com/users/leppie/repos","events_url":"https://api.github.com/users/leppie/events{/privacy}","received_events_url":"https://api.github.com/users/leppie/received_events","type":"User","site_admin":false},"created_at":"2016-02-15T06:01:34Z","updated_at":"2016-02-15T06:01:34Z","body":"Is the  condition correct at https://github.com/christoff-buerger/racr/blob/master/racr-net/ironscheme-hashtable-adapter.sls#L42 ?\r\n\r\nIt feels like you want `(if (nil-record? e) '() e)`"}}