Match Function in Java
public static Cons dummysub = list(list("t", "t"));
public static Cons match(Object pattern, Object input) {
return matchb(pattern, input, dummysub); }
public static Cons
matchb(Object pattern, Object input, Cons bindings) {
if ( bindings == null ) return null;
if ( consp(pattern) )
if ( consp(input) )
return matchb( rest( (Cons) pattern),
rest( (Cons) input),
matchb( first( (Cons) pattern),
first( (Cons) input),
bindings) );
else return null;
if ( varp(pattern) ) {
Cons binding = assoc(pattern, bindings);
if ( binding != null )
if ( equal(input, second(binding)) )
return bindings;
else return null;
else return cons(list(pattern, input), bindings); }
if ( eql(pattern, input) )
return bindings;
return null; }