Every object conforms to an interface, including some error handling functions. The interface is about composition and transformation and iteration/operation (map).
Is this about functional programming? It seems like it must, but I know very little about that and still have no real idea what the benefit of this is or even its purpose.
Edit: So I see that these are algebraic properties that are being defined, to relate it to my limited knowledge I see that Setoid define an equivalence relation interface, equals, which your objects must conform to.
My next question is what is the benefit of programming like this? Maybe I'd have to brush up on my algebra and learn how these relationships/"specifications" are useful.
I am actually kinda curious about this, but it's a little hard to penetrate.