For Gauche 0.9.5


Next: , Previous: , Up: ライブラリモジュール - ユーティリティ   [Contents][Index]

12.61 util.isomorph - 同型判定

Module: util.isomorph

二つの構造が同型かどうかを判定する手続きを提供するモジュールです。

Function: isomorphic? obj1 obj2 :optional context

obj1obj2が同型であれば#tを返します。

省略可能な引数contextは、下で説明するobject-isomorphic? の中からisomorphic?を再帰的に呼び出す場合に使います。

(isomorphic? '(a b) '(a b)) ⇒ #t

(define x (cons 0 0))
(define y (cons 0 0))
(isomorphic? (cons x x)
             (cons x y))
 ⇒ #f
(isomorphic? (cons x x)
             (cons y y))
 ⇒ #t
Generic Function: object-isomorphic? obj1 obj2 context

このメソッドで、二つのオブジェクトの同型判定処理をカスタマイズできます。 基本的には、オブジェクトのトラバースしたいスロットに対してisomorphic?を順に適用し、 全てが成功すれば#tを、一つでも失敗すれば#fを返すようにします。 contextはトラバースのコンテクストを保持しているオブジェクトです。そのまま isomorphic?に渡して下さい。

デフォルトメソッドは、obj1obj2equal?の意味で等しければ #tを返します。


Next: , Previous: , Up: ライブラリモジュール - ユーティリティ   [Contents][Index]