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.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 63C98BBAF for ; Wed, 25 Jun 2008 18:29:55 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiwBAIsPYkjOvjGvfGdsb2JhbACSVQEBCwUCBgcRA58x X-IronPort-AV: E=Sophos;i="4.27,703,1204498800"; d="scan'208";a="26711238" Received: from web54605.mail.re2.yahoo.com ([206.190.49.175]) by mail4-smtp-sop.national.inria.fr with SMTP; 25 Jun 2008 18:29:49 +0200 Received: (qmail 40471 invoked by uid 60001); 25 Jun 2008 16:29:48 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Received:X-Mailer:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID; b=Fi0p0zQ2oz2n156yGjYXtcMQTr0Cyszdt3qqlXTvl+RcEcdAviBR6oW9KB2XsYNdWbS6sQMxZudXOhaEdkGwz6pQI/ISvMiTovjjvAC6sBiu9bOqREZuuUfeafJiD0YqoLbWMZmBj4MNgJR61AG2HOVL4KHN8V6j0gyp3Xn63Ak=; Received: from [212.13.62.209] by web54605.mail.re2.yahoo.com via HTTP; Wed, 25 Jun 2008 09:29:48 PDT X-Mailer: YahooMailWebService/0.7.199 Date: Wed, 25 Jun 2008 09:29:48 -0700 (PDT) From: Dario Teixeira Subject: Re: [Caml-list] Phantom types: transparency vs rogue unification To: Jacques Carette Cc: caml-list@yquem.inria.fr In-Reply-To: <48625DED.7080704@mcmaster.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Message-ID: <522359.38196.qm@web54605.mail.re2.yahoo.com> X-Spam: no; 0.00; unification:01 functor:01 dependencies:01 parser:01 sig:01 val:01 sig:01 val:01 parser:01 struct:01 struct:01 cheers:01 1.0:98 2.0:98 1.0:98 > Note that I would personally implement Stringies_IO a > Functor over=20 > Stringies rather than having explicit dependencies. >=20 Hi, Indeed! In the meantime I've also thought of a functor-based solution, which does the job even though it looks rather contrived: _________________________________________________________ module type PARSER =3D sig =09val parse: string -> float end module type STRINGIES =3D sig =09type 'a t =09val make: float -> string t =09val add: string t -> string t -> string t =09val parse: string -> string t end module Stringies (Parser : PARSER): STRINGIES =3D struct =09type 'a t =3D float =09let make x =3D x =09let add a b =3D a +. b =09let parse =3D Parser.parse end module Myparser : PARSER =3D struct =09let parse =3D float_of_string end module Mystringies =3D Stringies (Myparser) open Mystringies let ola =3D add (make 1.0) (make 2.0);; let ola =3D add (make 1.0) 2.0;; (* Error *) _________________________________________________________ Thanks for your time! Cheers, Dario Teixeira =0A=0A=0A __________________________________________________________= =0ASent from Yahoo! Mail.=0AA Smarter Email http://uk.docs.yahoo.com/nowyou= can.html