From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=DNS_FROM_RFC_ABUSE autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id F3F10BC69 for ; Thu, 8 Mar 2007 21:15:57 +0100 (CET) Received: from flyer.cs.umd.edu (flyer.cs.umd.edu [128.8.128.178]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id l28KFuJm027410 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 8 Mar 2007 21:15:57 +0100 Received: from loompa.cs.umd.edu (loompa.cs.umd.edu [128.8.128.63]) by flyer.cs.umd.edu (8.12.11.20060308/8.12.5) with ESMTP id l28KFr49013863; Thu, 8 Mar 2007 15:15:53 -0500 From: Michael Hicks Received: (from mwh@localhost) by loompa.cs.umd.edu (8.12.10/8.12.5) id l28KFrfh003479; Thu, 8 Mar 2007 15:15:53 -0500 (EST) Message-Id: <200703082015.l28KFrfh003479@loompa.cs.umd.edu> Subject: Re: [Caml-list] Operator overloading In-Reply-To: <3D1E4D9CA9BCE04D8F2B55F203AE4CE30666AB74@selma.roomandboard.com> from Robert Fischer at "Mar 8, 2007 02:02:21 pm" To: Robert Fischer Date: Thu, 8 Mar 2007 15:15:53 -0500 (EST) Cc: caml-list@yquem.inria.fr X-Mailer: ELM [version 2.4ME+ PL66 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-j-chkmail-Score: MSGID : 45F06EFC.000 on concorde : j-chkmail score : X : 0/20 1 0.000 -> 1 X-Miltered: at concorde with ID 45F06EFC.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; overloading:01 popl:01 haskell:01 dependencies:01 overloading:01 functor:01 ocaml:01 modular:01 chakravarty:01 sigplan:01 popl:01 -mike:01 derek:98 07.:98 caml-list:01 This discussion reminds of a paper that appeared at POPL 2007 about the relationship between ML modules and Haskell type classes. The former are really good for organizing your namespace and making dependencies and operations explicit. The latter are really good at (disciplined) operator overloading (which is convenient as many here have argued). The paper looks at how the two can be combined (essentially, operator overloading is implicit functor instantiation), so you can have the best of both worlds. Now someone just needs to implement it for OCaml ... Modular Type Classes. Derek Dreyer, Robert Harper, and Manuel M.T. Chakravarty. In 2007 ACM SIGPLAN Symposium on Principles of Programming Languages http://ttic.uchicago.edu/~dreyer/papers/mtc/main-short.pdf http://ttic.uchicago.edu/~dreyer/talks/popl07.ppt -Mike