categories - Category Theory list
 help / color / mirror / Atom feed
From: Mike Stay <metaweta@gmail.com>
To: "Carsten Führmann" <c.fuhrmann@bath.ac.uk>
Subject: Re: additions
Date: Thu, 24 Dec 2009 08:25:17 -0800	[thread overview]
Message-ID: <E1NOGTv-0002nE-Je@mailserv.mta.ca> (raw)
In-Reply-To: <4B3368C1.3000800@bath.ac.uk>

2009/12/24 Carsten Führmann <c.fuhrmann@bath.ac.uk>:
> Dear Mike,
>
>> 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.
>
> It might be worth noting that JavaScript is a functional language.
> (It has a lambda operator ("function"), closures, and can pass
> functions as parameters and return values.) However, because it has
> eager evaluation, the whole monad business does not apply, at least not
> in the way it applies to Haskell.
>
> In fact, JavaScript is probably the most widely used functional language
> on the planet.

I think you're confusing the existence of first-class functions with
functional programming.  Functional programming avoids state and
mutable data. It emphasizes the application of functions, in contrast
to the imperative programming style, which emphasizes changes in
state.

It's certainly possible to write functional programs in any of these
languages, but it takes a lot of conscious effort--in fact, I'd say
it's harder to write a functional program in JavaScript because of the
myriad of strange ways state changes occur.

I'm not sure what you mean by "the whole monad business does not
apply".  There are lots of monads, each doing something different.
There are several monadic parsers I know of in JavaScript, for
instance.  Here's a monad for making JavaScript be lazily evaluated
instead of eager:
  function e(x) { return function() { return x; } }
  function m(x, y) { return function () { return x()(y()); } }

> But there are two strange phenomena:
>
> - Functional-programming experts keep on overlooking JavaScript (probably
> because it is so ugly from a theorists point of view)

Probably because it's not functional.

> - Most professional JavaScript programmers fail to see the enormous
> functional potential of JavaScript.
>
> It is a very strange situation: the whole world uses a functional language
> and almost nobody is aware of it.
>
> Anyway, even though I am very category-prone, I must admit that category
> theory might be a very tough sell for the JavaScript crowd :)

Yes--most JavaScript development is done by amateurs who cut and paste
someone else's code and try to tweak it to do what they want.  They
are not mathematicians.

> Best,
>  Carsten
>



-- 
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/ ]


  parent reply	other threads:[~2009-12-24 16:25 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             ` additions Mike Stay
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   ` Mike Stay [this message]
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=E1NOGTv-0002nE-Je@mailserv.mta.ca \
    --to=metaweta@gmail.com \
    --cc=c.fuhrmann@bath.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).