add Data.Function
add Instance Eq, Ord