From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 28B7B7EF10 for ; Tue, 24 Feb 2015 22:11:34 +0100 (CET) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of lpw25@cam.ac.uk) identity=pra; client-ip=131.111.8.150; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="lpw25@cam.ac.uk"; x-sender="lpw25@cam.ac.uk"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of lpw25@cam.ac.uk) identity=mailfrom; client-ip=131.111.8.150; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="lpw25@cam.ac.uk"; x-sender="lpw25@cam.ac.uk"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of postmaster@ppsw-50.csi.cam.ac.uk designates 131.111.8.150 as permitted sender) identity=helo; client-ip=131.111.8.150; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="lpw25@cam.ac.uk"; x-sender="postmaster@ppsw-50.csi.cam.ac.uk"; x-conformance=sidf_compatible; x-record-type="v=spf1" X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BlAQCQ6OxUnJYIb4NbhDKwRwaYRAKBL0MBAQEBAQEQAQEBAQEGDQkJFC6EEAEEAXkFCwsOEyUPAQRJE4gnCATQGIRqAQEBBwEBAQEehgeFDIRuB4QrBZkgkzuEEG+CQwEBAQ X-IPAS-Result: A0BlAQCQ6OxUnJYIb4NbhDKwRwaYRAKBL0MBAQEBAQEQAQEBAQEGDQkJFC6EEAEEAXkFCwsOEyUPAQRJE4gnCATQGIRqAQEBBwEBAQEehgeFDIRuB4QrBZkgkzuEEG+CQwEBAQ X-IronPort-AV: E=Sophos;i="5.09,641,1418079600"; d="scan'208";a="123238518" Received: from ppsw-50.csi.cam.ac.uk ([131.111.8.150]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 24 Feb 2015 22:11:33 +0100 X-Cam-AntiVirus: no malware found X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from host86-159-4-23.range86-159.btcentralplus.com ([86.159.4.23]:39867 helo=study.localdomain) by ppsw-50.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.158]:587) with esmtpsa (PLAIN:lpw25) (TLSv1.2:AES128-GCM-SHA256:128) id 1YQMlQ-000572-s5 (Exim 4.82_3-c0e5623) (return-path ); Tue, 24 Feb 2015 21:11:32 +0000 From: Leo White To: Ben Millwood Cc: Jeremy Yallop , David Allsopp , OCaml List References: <000401d05056$ed605f70$c8211e50$@metastack.com> <87wq372noc.fsf@study.localdomain> X-Face: "XWxb[u_Z\PA_Y?9@|IA!!+jTb(/290-*ea/Un$I0B98.$n%eL.;2w*,z]WR#T:,p[ NBd++M7l]#7zj7!{~iw $W-"/=|dVjhT[D{4~gE}gK<2`.6fs!;uqqud]vs2N/3^m7{aS1V, Date: Tue, 24 Feb 2015 21:11:32 +0000 In-Reply-To: (Ben Millwood's message of "Tue, 24 Feb 2015 20:03:58 +0000") Message-ID: <87k2z72ewr.fsf@study.localdomain> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Caml-list] Match error with abstract types in modules Ben Millwood writes: > I think the issue would be substantially mitigated were it not for the simple fact that [type 'a t] in a signature > means "abstract type", whereas [type 'a t] in a structure means "empty type". The fact that there is no syntactic > distinction, and indeed *no way to make one* caused me a great deal of confusion some time ago when I had a problem > similar to David's. You can make an empty type (or at least a type for which there are no expressions) using: type 'a t = private T