[Gauche-devel-jp] Re: lib/slib.scmの(home-vicinity)

アーカイブの一覧に戻る

Shoji Kuzukami kuzuk****@manba*****
2003年 12月 12日 (金) 14:37:47 JST


いろいろ調べてみると,goshは,
(eqv? anyone1 anyone2) => #t
(equal? anyone1 anyone2) => #f
ということが起こりうるのですね.

もうすこし勉強して改良しました.
というかequal?に組み込んでみました.


--- src/boolean.c.old	2003-12-12 13:03:08.000000000 +0900
+++ src/boolean.c	2003-12-12 14:29:13.000000000 +0900
@@ -98,6 +98,15 @@
         }
         return FALSE;
     }
+		if (SCM_IDENTIFIERP(y) && SCM_SYMBOL(x)){
+				ScmObj z;
+				z = y;
+				y = x;
+				x = z;
+		}
+		if ( SCM_IDENTIFIERP(x) && SCM_SYMBOL(y) ){
+			return SCM_EQ(SCM_OBJ(SCM_IDENTIFIER(x)->name),y);
+		}
     if (!SCM_PTRP(x)) return (x == y);
     cx = Scm_ClassOf(x);
     cy = Scm_ClassOf(y);


さきほど試したところ
gosh> (define-syntax hoge (syntax-rules () ((hoge foo ...) (cdr b))))
gosh> (equal? (macroexpand '(hoge bar)) '(cdr b))
=> #t
となりました.



Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る