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; }