categories - Category Theory list
 help / color / mirror / Atom feed
From: Mike Stay <metaweta@gmail.com>
To: Steve Vickers <s.j.vickers@cs.bham.ac.uk>
Subject: Re: additions
Date: Wed, 23 Dec 2009 10:06:15 -0800	[thread overview]
Message-ID: <E1NNWLx-0002Jr-Oo@mailserv.mta.ca> (raw)
In-Reply-To: <85E4A5AE-3C86-450A-BFFC-4760E40B89F1@cs.bham.ac.uk>

On Wed, Dec 23, 2009 at 3:19 AM, Steve Vickers
<s.j.vickers@cs.bham.ac.uk> wrote:
> Dear Mike,
>
> Of course, in functional programming the applications of categories go far
> beyond lambda terms.
>
> (1) At a fairly elementary level, the treatment of list types in functional
> programming languages...

> (2) More advanced, Haskell has made important use of monads as a programming
> technique...

> So it could be that the best way forward is to teach them Haskell first...

Thanks, everyone for your replies!  Many of you suggested the same
approach as Steve, functional programming and monads.  At Google,
however, we use Java, C++ and Python (collectively "JCP") for programs
that run on our servers and JavaScript for programs that run in our
webpages.  So there's not a lot of call for learning a functional
programming language either.

On the wikipedia page for monads in functional programming, I see
these examples:
* I/O--JCP aren't functional; side effects are easy.

* Maybe--This one's really exception handling, built into JCP.

* Identity--so trivial it's never used.

* Lists--built into JCP as arrays, together with the function "map";
the rest of the data structures are in the standard libraries, too.
Monads and catamorphisms certainly give a more unified picture, but
still not enough benefit to a programmer to justify the investment in
learning category theory.

* State & environment--as before, JCP aren't functional.  State and
environment are easy to come by.

* Continuation passing style transformation--useful for functional
language compiler writers for turning recursive programs into
iterative ones that don't consume the stack.  Very small audience.
Continuations are also useful for coroutines and "threadless actors",
but malicious code can consume all the resources--in this model,
there's no preemptive multitasking; it's all voluntary.

JCP are eagerly evaluated.  One monad that isn't on the wiki page is
for making a program be lazily
evaluated.  That can come in handy sometimes, but still doesn't
justify learning category theory.

I suppose the strongest argument I've heard for learning functional
programming (and thereby justifying learning category theory) is that
functional programs are much easier to test: there's no inaccessible
state to worry about setting up properly.  Monads allow the functional
programmer to do easily all these things he's used to from imperative
programming, while gaining the benefits of easy testability.

Other reasons I've received involve solving problems in specialized
domains.  I think if I have a long enough list of these, I could
probably convince my friends of category theory's utility.
-- 
Mike Stay - metaweta@gmail.com
http://math.ucr.edu/~mike
http://reperiendi.wordpress.com


[For admin and other information see: http://www.mta.ca/~cat-dist/ ]


  reply	other threads:[~2009-12-23 18:06 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-17 23:30 A well kept secret? peasthope
2009-12-18  4:09 ` John Baez
2009-12-18 22:25   ` Ellis D. Cooper
2009-12-19 17:45     ` Ronnie Brown
2009-12-19 22:16     ` John Baez
2009-12-20 22:52       ` Greg Meredith
2009-12-21 15:46       ` Zinovy Diskin
2009-12-22 16:59         ` zoran skoda
2009-12-23  1:53       ` Tom Leinster
2009-12-23 14:15         ` Colin McLarty
2009-12-23 19:10       ` CatLab Joyal, André
2009-12-20 21:50     ` A well kept secret? jim stasheff
     [not found]     ` <d4da910b0912220859q3858b68am4e58749f21ce839d@mail.gmail.com>
2009-12-23  4:31       ` Zinovy Diskin
2009-12-23 14:35         ` Ronnie Brown
     [not found]     ` <4B322ACA.50202@btinternet.com>
2009-12-25 20:06       ` Zinovy Diskin
2009-12-20 17:50   ` Joyal, André
     [not found]     ` <B3C24EA955FF0C4EA14658997CD3E25E2159B6AA@CAHIER.gst.uqam.ca>
2009-12-21  8:43       ` additions Joyal, André
2009-12-21 14:16         ` additions Bob Coecke
2009-12-22  2:24           ` additions Joyal, André
2009-12-23 20:51             ` additions Thorsten Altenkirch
2009-12-24 23:55             ` additions Dusko Pavlovic
2009-12-26  2:14             ` additions Peter Selinger
     [not found]           ` <B3C24EA955FF0C4EA14658997CD3E25E370F5626@CAHIER.gst.uqam.ca>
     [not found]             ` <B3C24EA955FF0C4EA14658997CD3E25E370F5636@CAHIER.gst.uqam.ca>
     [not found]               ` <B3C24EA955FF0C4EA14658997CD3E25E370F5638@CAHIER.gst.uqam.ca>
2009-12-28 17:54                 ` quantum information and foundation Joyal, André
2009-12-29 12:13                   ` Urs Schreiber
2009-12-29 15:55                   ` zoran skoda
2009-12-22  0:39         ` additions Mike Stay
2009-12-23 11:19           ` additions Steve Vickers
2009-12-23 18:06             ` Mike Stay [this message]
2009-12-24 13:12               ` additions Carsten Führmann
2009-12-24 19:23               ` additions Dusko Pavlovic
2009-12-23 19:06             ` additions Thorsten Altenkirch
     [not found]         ` <Pine.LNX.4.64.0912211413340.15997@msr03.math.mcgill.ca>
     [not found]           ` <B3C24EA955FF0C4EA14658997CD3E25E2159B6B3@CAHIER.gst.uqam.ca>
2009-12-23 17:08             ` RE : categories: additions Joyal, André
2009-12-21 19:20   ` additions Michael Barr
2009-12-27 23:14   ` quantum information and foundation Dusko Pavlovic
     [not found]   ` <Pine.GSO.4.64.0912272037140.28761@merc3.comlab>
2009-12-28 16:38     ` Bob Coecke
     [not found]   ` <Pine.GSO.4.64.0912281630040.29390@merc4.comlab>
2009-12-28 18:17     ` Bob Coecke
2009-12-18 10:48 ` A well kept secret? KCHM
2009-12-19 20:55   ` Vaughan Pratt
2009-12-22 12:21 ` additions Mark Weber
2009-12-23  0:05   ` additions Scott Morrison
2009-12-23 14:13     ` additions Mark Weber
     [not found] ` <B3C24EA955FF0C4EA14658997CD3E25E2159B6B8@CAHIER.gst.uqam.ca>
2009-12-23 21:04   ` CatLab Urs Schreiber
     [not found] ` <4B3368C1.3000800@bath.ac.uk>
2009-12-24 16:25   ` additions Mike Stay
2009-12-26  0:03     ` additions Toby Bartels
     [not found]   ` <7f854b310912240825s39f195b2x2db16cc8f3a5cde7@mail.gmail.com>
2009-12-25  8:18     ` additions Carsten Führmann
     [not found] ` <4B347567.9070603@bath.ac.uk>
2009-12-29 23:17   ` additions Mike Stay
2009-12-30 21:00     ` additions Greg Meredith
2009-12-22  1:43 additions Fred E.J. Linton
2009-12-23  1:38 additions Fred E.J. Linton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1NNWLx-0002Jr-Oo@mailserv.mta.ca \
    --to=metaweta@gmail.com \
    --cc=s.j.vickers@cs.bham.ac.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).