A functional library based on category theory with immutable multimethods, functional data structures, functional operator overloading, automated specification testing