i know what is a monad now. but i still have problems understanding the continuation monad and arrows. Also is it necessary to know category theory to be a good haskell programmer?
On 13-10-26 08:34 AM, swrangsar basumatary wrote:
i know what is a monad now. but i still have problems understanding the continuation monad and arrows.
When one day you become interested in a problem that can be suitably solved by the continuation monad, you will understand the continuation monad. Ditto for arrows.
Also is it necessary to know category theory to be a good haskell programmer?
I will use a parable. Does a successful businessman know economics theory? (Allow me to define "successful businessman" as "maximizes profit under constraints from reality, laws, culture, and even a bit of morality".) That depends on what is meant by "know economics theory". To some people, it requires knowing the words "maximize profit under constraints". Then the businessman probably doesn't "know economics theory" --- he/she probably doesn't know what that idea is called. To some other people, it means knowing the idea, not necessarily the wording, of maximizing profit under constraints. Then the businessman not only knows that idea, he/she is also implementing it, and implementing it right.
I think most people would agree that knowing category theory doesn't necessarily make you a good haskell programmer. What makes you a better programmer is more experience, better ways to think, etc... Because of this, a mathematician who knows category theory but has never programmed would not find that experience very useful to writing real programs. Instead, you need experience thinking about problems from an algorithmic and implementation driven perspective, which isn't necessarily something mathematicians are bad at, but programming experience definitely highlights a different set of muscles. What category theory gives you is a set of fundamental tools to think about abstractions, and this may help you get a higher level view of a problem in a principled manner more quickly. In practice, most Haskell programmers write some code, learn some theory (relevant to that code, for example, what a monoid is), write more code, learn more theory, refine and repeat. Brent Yorgey's [Typeclassopedia](http://www.haskell.org/haskellwiki/Typeclassopedia) is a good way to learn a bit of both. It highlights some practical haskell artifacts which are influenced by category theory. In learning category theory, it seems to be the case that you need copious examples before you understand anything (otherwise you'll be reading definition after definition saying "why does any of this matter?" to yourself), and in writing more Haskell code, you'll gain experience allowing you to make those connections. Kris On Sat, Oct 26, 2013 at 8:34 AM, swrangsar basumatary <swrangsarb@gmail.com> wrote:
i know what is a monad now. but i still have problems understanding the continuation monad and arrows.
Also is it necessary to know category theory to be a good haskell programmer?
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
On Sat, Oct 26, 2013 at 7:34 PM, swrangsar basumatary <swrangsarb@gmail.com>wrote:
Also is it necessary to know category theory to be a good haskell programmer?
If you haven't already, you're way better off learning classical PL foundations with an FP emphasis, e.g. http://pages.cs.wisc.edu/~horwitz/CS704-NOTES/ -- Kim-Ee
thanks, people On Mon, Oct 28, 2013 at 6:08 AM, Kim-Ee Yeoh <ky3@atamo.com> wrote:
On Sat, Oct 26, 2013 at 7:34 PM, swrangsar basumatary < swrangsarb@gmail.com> wrote:
Also is it necessary to know category theory to be a good haskell programmer?
If you haven't already, you're way better off learning classical PL foundations with an FP emphasis, e.g.
http://pages.cs.wisc.edu/~horwitz/CS704-NOTES/
-- Kim-Ee
participants (4)
-
Albert Y. C. Lai -
Kim-Ee Yeoh -
Kristopher Micinski -
swrangsar basumatary