> the last API you'll ever need
So like... if I wanted to make a post to twitter, I'm pretty sure I'd need another API.
The chart on the fantasy-land github page demonstrates the interfaces available on each typeclass. For instance, a Maybe is a functor, so it has the map interface. It's also a Monad so it has the chain interface.
Unfortunately, API is a loaded term and I think the author doesn't do a good job differentiating from the common usage of the term.
Even then, I need to know what the names of the properties are that I have to provide to the fantasy-land-compliant-whatever. Being an expert in fantasy land doesn't tell me that "message" is the property that contains the body of the twitter-compliant message. I still need an api.
I think the confusion here arises from a fairly common conflation of a web service with the interface used to interact with said service.
value["functionName"](...[arguments])
value is the the thing you're operating on. functionName is the name of the thing you want to do. arguments are any other relevant values.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.
around ch9 ( https://drboolean.gitbooks.io/mostly-adequate-guide/content/... ) they start mentioning fantasy-land and you should also have a good background in what FL is trying to achieve.
Another benefit is that these abstractions appear again and again under many contexts. Recognizing them allows you to give them a common interface, instead of flatMap for lists, andThen for promises, and so on.