sub unify { my ($v1, $v2, $continuation) = @_; $v1 = Var->new($v1) unless UNIVERSAL::isa($v1, 'Var'); $v2 = Var->new($v2) unless UNIVERSAL::isa($v2, 'Var'); if ($v1->equal($v2)) { $continuation->(); } elsif ($v1->bind($v2)) { $continuation->(); $v1->unbind } elsif ($v2->bind($v1)) { $continuation->(); $v2->unbind; }; return(0); };