From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id VAA09725 for caml-red; Mon, 6 Nov 2000 21:04:13 +0100 (MET) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA16121 for ; Sat, 4 Nov 2000 19:49:20 +0100 (MET) Received: from igw8.watson.ibm.com (igw8.watson.ibm.com [198.81.209.20]) by concorde.inria.fr (8.11.1/8.10.0) with ESMTP id eA4InJ907837 for ; Sat, 4 Nov 2000 19:49:19 +0100 (MET) Received: from sp1n189at0.watson.ibm.com (sp1n189at0.watson.ibm.com [9.2.104.62]) by igw8.watson.ibm.com (8.9.3/8.9.3/05-14-1999) with ESMTP id NAA08898; Sat, 4 Nov 2000 13:49:11 -0500 Received: from nautilus-chet.watson.ibm.com (lig32-227-60-32.us.lig-dial.ibm.com [32.227.60.32]) by sp1n189at0.watson.ibm.com (8.9.3/Feb-20-98) with ESMTP id NAA33570; Sat, 4 Nov 2000 13:49:09 -0500 Received: from nautilus.chet.org (localhost [127.0.0.1]) by nautilus-chet.watson.ibm.com (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id NAA08338; Sat, 4 Nov 2000 13:48:30 -0500 Message-Id: <200011041848.NAA08338@nautilus-chet.watson.ibm.com> X-Authentication-Warning: nautilus.chet.org: Host localhost [127.0.0.1] claimed to be nautilus.chet.org To: Chris Hecker cc: caml-list@inria.fr Subject: Re: practical functional programming In-reply-to: Your message of Fri, 03 Nov 2000 14:44:41 PST. <4.3.2.7.2.20001103055229.00ab6880@shell16.ba.best.com> Date: Sat, 04 Nov 2000 13:48:30 -0500 From: Chet Murthy Sender: weis@pauillac.inria.fr Don't read Okasaki's book. Read the first chapter of Xavier Leroy's thesis. First. I don't mean to be flaming, and certainly, what I say, I'm sure, comes from me, and not from Xavier, so please don't impute to him any of my heat. But there's a place for purity, and a place for impurity. Sometimes, pure code is _more_ complex and difficult-to-understand than impure code. It all depends. And none of the arguments about how pure programs are easier to analyze have ever held up, unless you're talking about "append". Otherwise, well, complex programs solving complex problems are hard to analyze. Period. I've built mission-critical transaction-processing systems in Perl and Java, and I've debugged them in C/C++. I've written _large_ CAML programs, as well as even _larger_ SML programs. There's no difference. Just that in CAML, you can use purity more easily, when yuou want, and often, purity makes for faster programs. No hard and fast rules. Just rules of thumb. Experience. Taste. Discipline. --chet--