From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id MAA30454; Fri, 7 Nov 2003 12:39:44 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f 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 MAA30476 for ; Fri, 7 Nov 2003 12:39:43 +0100 (MET) Received: from smtp6.mindspring.com (smtp6.mindspring.com [207.69.200.110]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id hA7Bdg107438 for ; Fri, 7 Nov 2003 12:39:43 +0100 (MET) Received: from user-0ccekf4.cable.mindspring.com ([24.199.81.228] helo=sks.dnsalias.net) by smtp6.mindspring.com with esmtp (Exim 3.33 #1) id 1AI4xq-0007Xj-00 for caml-list@inria.fr; Fri, 07 Nov 2003 06:39:42 -0500 Subject: Why are functors better? (Re: [Caml-list] Map efficiency?) From: "Yaron M. Minsky" To: Caml List In-Reply-To: <16299.22375.433305.104788@gargle.gargle.HOWL> References: <20031104093905.GF24152@st> <3FA7EC77.50502@baretta.com> <16299.22375.433305.104788@gargle.gargle.HOWL> Content-Type: text/plain Organization: Cornell University Message-Id: <1068205181.30150.12.camel@dragonfly.localdomain> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Fri, 07 Nov 2003 06:39:41 -0500 Content-Transfer-Encoding: 7bit X-Loop: caml-list@inria.fr X-Spam: no; 0.00; functors:01 caml-list:01 yaron:01 minsky:01 yminsky:01 cornell:01 filliatre:01 functors:01 functorial:01 preferable:01 functorial:01 afa:99 yminsky:01 overkill:01 yaron:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Fri, 2003-11-07 at 03:27, Jean-Christophe Filliatre wrote: > [ Some discussion of methods for building maps without functors ] > > (But the functorial interface is definitely the best, of course.) I don't understand this perspective at all. Functors seem like a fairly problematic corner of the language. In this case, except for some possible efficiency issues, it seems clear that a non-functorial map is preferable, for simplicity and ease-of-use issues, and performance aside, I can't see much to recommend the current functorial approach. Functors would be a lot more useful if they could be used as a large-scale structural tool. Sadly, the current implementation makes this quite difficult, since there's no good way of parameterizing multiple modules at once (as noted in a previous thread. See http://groups.google.com/groups?q=group%3Afa.caml+functors+yminsky&ie=UTF-8&oe=UTF-8&hl=en&btnG=Google+Search for details.) For most situations where you'd really need them, they're not powerful enough. And for the situations where they're powerful enough, they're usually overkill. Map and Set are examples where they almost strictly get in the way. y -- |--------/ Yaron M. Minsky \--------| |--------\ http://www.cs.cornell.edu/home/yminsky/ /--------| Open PGP --- KeyID B1FFD916 Fingerprint: 5BF6 83E1 0CE3 1043 95D8 F8D5 9F12 B3A9 B1FF D916 ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners