RE: AW: slide: useful function?

On Mon, 2 Dec 2002, David Bergman wrote: (snip)
Till then, we "Haskellers" will probably continue expressing our patterns either directly in Haskell or using highly formal language, with terms such as "catamorphisms".
The virtue, and weakness, of traditional design patterns is their vagueness and informal character, making them (1) comprehensible to the 90% of the developer community not familiar with category theory but (2) (snip)
If there are any good ways in which non-mathematicians can get to grips with these terms from category theory, they would be well worth promoting. For example, despite having a good computer science degree (in which I was at least introduced to FP, proof, etc. and even learned to draw the dual graph of hypercubes) I'm really not equipped to understand catamorphisms in terms of algebras and homomorphisms, and don't currently have time to take the math degree I fear I'd need in order to do so. Last time I was looking at category theory books I think I came to the conclusion that Lawvere and Schanuel cover things kindly but Pierce seemed to get the syllabus right, so the "right" book wasn't quite out there. My understanding of monads is already a matter of record. Does anyone know of a friendly text that might help new Haskellers to understand functors, etc. and what they mean for program design? I'm not averse to the formal language per se if it can be easily acquired; right now, I worry that I'm using Haskell suboptimally because, not only do I not know the terminology well, but I fear that I'm not even cognisant of the concepts that these terms represent. In a nutshell: if these category theory concepts indeed have an important impact in Haskell land, how to introduce them to working Haskell programmers well enough that they can use them in engineering software that's at least half as good as it could be? (I'm making the assumption here that it would be good for Haskell to be much more widely used - it shouldn't solely be for researchers.) -- Mark

--- Mark Carroll wrote:
On Mon, 2 Dec 2002, David Bergman wrote: (snip)
Till then, we "Haskellers" will probably continue expressing our patterns either directly in Haskell or using highly formal language, with terms such as "catamorphisms".
The virtue, and weakness, of traditional design patterns is their vagueness and informal character, making them (1) comprehensible to the 90% of the developer community not familiar with category theory but (2) (snip)
If there are any good ways in which non-mathematicians can get to grips with these terms from category theory, they would be well worth promoting. For example, despite having a good computer science degree (in which I was at least introduced to FP, proof, etc. and even learned to draw the dual graph of hypercubes) I'm really not equipped to understand catamorphisms in terms of algebras and homomorphisms, and don't currently have time to take the math degree I fear I'd need in order to do so. Last time I was looking at category theory books I think I came to the conclusion that Lawvere and Schanuel cover things kindly but Pierce seemed to get the syllabus right, so the "right" book wasn't quite out there.
My understanding of monads is already a matter of record. Does anyone know of a friendly text that might help new Haskellers to understand functors, etc. and what they mean for program design? I'm not averse to the formal language per se if it can be easily acquired; right now, I worry that I'm using Haskell suboptimally because, not only do I not know the terminology well, but I fear that I'm not even cognisant of the concepts that these terms represent.
In a nutshell: if these category theory concepts indeed have an important impact in Haskell land, how to introduce them to working Haskell programmers well enough that they can use them in engineering software that's at least half as good as it could be?
(I'm making the assumption here that it would be good for Haskell to be much more widely used - it shouldn't solely be for researchers.)
Here's some of what I've come across: Jonathan M. D. Hill, and Keith Clarke "An introduction to category theory, category theory monads, and their relationship to functional programming" ftp://ftp.dcs.qmw.ac.uk/cpc/jon_hill/qmw681.ps.Z http://www.dcs.qmul.ac.uk/SEL-HPC/Articles/GeneratedHtml/functional.monads.h... Tom Leinster's Part III Category Theory course given in Cambridge in the academic year 2000-2001: http://www.dpmms.cam.ac.uk/~leinster/categories/ John Baez Categories, Quantization, and Much More http://math.ucr.edu/home/baez/categories.html (see the links at the bottom of this page, too.) Baez also has interesting info in his series, This Week's Finds in Mathematical Physics http://math.ucr.edu/home/baez/TWF.html Chris ===== Christopher Milton cmiltonperl@yahoo.com __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com

On Monday 02 December 2002 10:50 pm, Christopher Milton wrote:
If there are any good ways in which non-mathematicians can get to grips with these terms from category theory, they would be well worth promoting. For example, despite having a good computer science degree (in which I was at least introduced to FP, proof, etc. and even learned to draw the dual graph of hypercubes) I'm really not equipped to understand catamorphisms in terms of algebras and homomorphisms, and don't currently have time to take the math degree I fear I'd need in order to do so. Last time I was looking at category theory books I think I came to the conclusion that Lawvere and Schanuel cover things kindly but Pierce seemed to get the syllabus right, so the "right" book wasn't quite out there.
Check "Category Theory for Computing Science" by Barr, one of the most coherent textbooks I've ever seen. I think there is almost _nothing_ unnecessary in that book :) Anyway, if you are familiar with graph theory (proving simpler theorems at least, that is) learning category theory is not that hard. The introductory concepts are quite intuitive but it tends to get a little confusing after that (like all grad level math subjects!)
My understanding of monads is already a matter of record. Does anyone know of a friendly text that might help new Haskellers to understand functors, etc. and what they mean for program design? I'm not averse to the formal language per se if it can be easily acquired; right now, I worry that I'm using Haskell suboptimally because, not only do I not know the terminology well, but I fear that I'm not even cognisant of the concepts that these terms represent.
In that book you will find sections on using category theory for denotational semantics of functional languages which I think is a good thing for those armchair neuroactivity sessions.
In a nutshell: if these category theory concepts indeed have an important impact in Haskell land, how to introduce them to working Haskell programmers well enough that they can use them in engineering software that's at least half as good as it could be?
(I'm making the assumption here that it would be good for Haskell to be much more widely used - it shouldn't solely be for researchers.)
Here's some of what I've come across:
Jonathan M. D. Hill, and Keith Clarke "An introduction to category theory, category theory monads, and their relationship to functional programming" ftp://ftp.dcs.qmw.ac.uk/cpc/jon_hill/qmw681.ps.Z http://www.dcs.qmul.ac.uk/SEL-HPC/Articles/GeneratedHtml/functional.monads. html
Monad is one of the simpler category theoretical concepts and I think you
don't even need to know too much about category theory to write monadic
programs. Going beyond monads is more interesting on the other hand. I
haven't been able to catch up with the developments in that area however the
"Arrow programming" discussions in this list seems to be a promising
direction for bringing more category theoretical elegance to Haskell
programming language. I wonder if there is any available code that makes a
good demonstration of such approaches.
Regards,
--
Eray Ozkural
participants (3)
-
Christopher Milton
-
Eray Ozkural
-
Mark Carroll