From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 8ACCFBCAE for ; Tue, 19 Jul 2005 11:35:31 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j6J9ZVrc025318 for ; Tue, 19 Jul 2005 11:35:31 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id LAA11544 for ; Tue, 19 Jul 2005 11:35:30 +0200 (MET DST) Received: from rwcrmhc11.comcast.net (rwcrmhc11.comcast.net [204.127.198.35]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j6J9ZTox030167 for ; Tue, 19 Jul 2005 11:35:29 +0200 Received: from [192.168.1.4] (c-24-10-253-157.hsd1.ut.comcast.net[24.10.253.157]) by comcast.net (rwcrmhc11) with ESMTP id <2005071909352701300rh1mse>; Tue, 19 Jul 2005 09:35:27 +0000 Message-ID: <42DCC95F.6050303@cs.utah.edu> Date: Tue, 19 Jul 2005 03:35:27 -0600 From: Robert Morelli User-Agent: Mozilla Thunderbird 1.0 (X11/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: james woodyatt Cc: Ocaml Subject: Re: [Caml-list] (Mostly) Functional Design? References: <9cc3782b05071411004b27b6a4@mail.gmail.com> <42DB6161.4030507@cs.utah.edu> <006801c58ba4$0b7bfe60$322cf8c1@oemcomputer> <42DBCA16.3000002@barettadeit.com> <18c83100e1769d1005e6f423c6003566@wetware.com> In-Reply-To: <18c83100e1769d1005e6f423c6003566@wetware.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Miltered: at concorde with ID 42DCC963.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 42DCC961.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; morelli:01 morelli:01 caml-list:01 woodyatt:01 ocaml:01 haskell:01 hudak:01 monads:01 monads:01 programmer's:01 semantics:01 haskell:01 felleisen:01 findler:01 flatt:01 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.2 X-Spam-Level: james woodyatt wrote: > On 18 Jul 2005, at 10:17, Doug Kirk wrote: > >> >> First, since this thread was started by somebody asking for ideas on >> learning FP, I can site a couple of printed resources that have helped >> me, but none are written using Ocaml: >> >> "Haskell School of Expression", Hudak, ISBN 0-52164-4089 >> "Algorithms: A Functional Programming Approach", Rabhi, Lapalme, ISBN >> 0-20159-6040 >> "Structure & Interpretation of Computer Programs", Sussman, Abelson, >> Sussman, ISBN 0-26269-2201 > > > I would add that a good tutorial on monads is a resource that every > functional programmer should read for comprehension. I haven't found > one that I can recommend without hesitation, but here's a candidate: > > You know, I once started writing an expository paper called "Monads for Mortals." My background is in mathematics and I knew what monads were in category theory more than a decade before I learned what a functional programming language was. However, my purpose was to explain monads in a way that I think is completely intuitive, simple, and sensible from an ordinary programmer's point of view. I abandoned the paper several years ago, but perhaps it's worth completing it. By the way, not only did I know about monads before FP, I'm probably one of the few people on earth who knew what what denotational semantics was before I even knew what the phrase "functional language" meant. I read an entire book on the subject about a year before I learned Haskell. Another book that might be mentioned here is Felleisen, Findler, Flatt, Krishnamurthi, How to Design Programs.