Docs for Func and AppFunc
Hi! This pr closes issue 2650. I tried to keep it simple, since most of the concepts are explained in the Applicative page. I added some comments whilst I was trying to understand the code. Let me know if anything is wrong, I'm not an expert, so perhaps I got something mixed up.
I think the doc needs to start with the fact that shape looks almost identical to Kleisli and explain how they are different.
The issue links to a blog post and explains it and maybe we can just reuse some of the explanation. A very short summary may be that Kleisli is about sequential composition of functions while Func (poorly named) is about parallel compositions of functions.
I appreciate your PR, but I think re-explaining other core typeclasses (Applicative, Traverse) shouldn't go in here.
I was hesitant to mention that. I had written something about it, but though that, given that AppFunc is "more general" than Kleisli it would be confusing to mention Kleisli for someone unfamiliar to it. But you are right, if it was discussed in the issue is because it's a point of confusion. I'll include it. Should it start the doc? or start the "AppFunc" section?
Ok, I mentioned the similarities with Kleisli and removed over explanation of traverse, just left the link to the applicative docs and an example
docs/datatypes/directory.conf needs to be updated with a reference to this page.
I left some small fixup suggestions as well, but I have to wonder if this article would be more useful if it started by introducing AppFunc directly, then discussing Func as a weaker version after (similar to how Apply is described in the Applicative article). With the current version, the motivation for caring (how to: compose applicative functors), is buried really deep.
Hey, I saw your suggestions and applied almost all, only question the one about Kleisli, let me know what you think. Also updated the branch and incluede docs links