From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id p2NM1YBI001491 for ; Wed, 23 Mar 2011 23:01:38 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkwDAHsKik1KfVK2kGdsb2JhbACYS4xzCBQBAQEBCQkNBxQEIahXilSCH4USL4hcAQEDBYVkBIxvg1JzhEE6 X-IronPort-AV: E=Sophos;i="4.63,233,1299452400"; d="scan'208";a="103371272" Received: from mail-wy0-f182.google.com ([74.125.82.182]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 23 Mar 2011 23:01:37 +0100 Received: by wyf23 with SMTP id 23so13331642wyf.27 for ; Wed, 23 Mar 2011 15:01:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:content-type:content-transfer-encoding :subject:date:message-id:to:mime-version:x-mailer; bh=UAOvlFbOCGJmf48AjG4cVgJRI0J3Q/kGPPejXR/C0N8=; b=GcNHdoL5c66duDNlf9rl5E0di7D3+VDHRSqOLmIgK4JmeDunBwVOhKuuL6oCZK7FQK ttQdMp/NAawGJ1N5x+JAmH/jVdC38EyJoypvtVqlG0ptdsfNnwb9q/Bd8VG0qV48fF6K rNtstdq/PqjlcQWi97qiK3rMwW1Uk5RVDUSKU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:content-type:content-transfer-encoding:subject:date:message-id :to:mime-version:x-mailer; b=hoxTW2r/qjkosvfSFjuM+2QWlFSK8jnZioC4F8m3j64kUb4B2KKZTGmdE7tDxqUyyQ OgGODmh3N8+PprDXUFl/jIPTfVPwgzszEZWza8dmzbSmCa6l6+WlaUNUxaz20WAoj/oJ s8F6DNMMh5eUBaqX2xKOxHT4AAAs/68+C9vHo= Received: by 10.227.21.145 with SMTP id j17mr7101108wbb.33.1300917697704; Wed, 23 Mar 2011 15:01:37 -0700 (PDT) Received: from [192.168.0.195] ([95.60.213.7]) by mx.google.com with ESMTPS id y12sm3082369wby.59.2011.03.23.15.01.35 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 23 Mar 2011 15:01:36 -0700 (PDT) From: Joel Reymont Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Wed, 23 Mar 2011 22:01:32 +0000 Message-Id: <07EE3576-E5F0-4187-AE8C-DEFEA5C92303@gmail.com> To: caml-list@inria.fr Mime-Version: 1.0 (Apple Message framework v1082) X-Mailer: Apple Mail (2.1082) Subject: [Caml-list] fighting the type system How do I do this? Thanks in advance, Joel --- How do I do this? module T = Foo module Ads = struct let read_request = T.read_request let read_response = T.read_response let request () = let req = new T.request in ... req ... --- Foo.mli open Thrift class request : object ('a) method copy : 'a method write : Protocol.t -> unit end val read_request : Protocol.t -> request class response : object ('a) method copy : 'a method write : Protocol.t -> unit end val read_response : Protocol.t -> response --- Util.ml type 'a writable = < write : Protocol.t -> unit; .. > as 'a module type Endpoint = sig val request : unit -> 'a writable val response : 'a writable -> 'b writable val read_request : Protocol.t -> 'a writable val read_response : Protocol.t -> 'a writable end -------------------------------------------------------------------------- - for hire: mac osx device driver ninja, kernel extensions and usb drivers ---------------------+------------+--------------------------------------- http://wagerlabs.com | @wagerlabs | http://www.linkedin.com/in/joelreymont ---------------------+------------+---------------------------------------