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 501637F0BA for ; Thu, 9 Feb 2017 10:57:36 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=yallop@gmail.com; spf=Pass smtp.mailfrom=yallop@gmail.com; spf=None smtp.helo=postmaster@mail-qk0-f170.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of yallop@gmail.com) identity=pra; client-ip=209.85.220.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="yallop@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of yallop@gmail.com designates 209.85.220.170 as permitted sender) identity=mailfrom; client-ip=209.85.220.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="yallop@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-qk0-f170.google.com) identity=helo; client-ip=209.85.220.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="postmaster@mail-qk0-f170.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AS4XtqRHTKc+ozFYNltD8FZ1GYnF86YWxBRYc798d?= =?us-ascii?q?s5kLTJ75ps+wAkXT6L1XgUPTWs2DsrQf2raQ4/yrATBIoc7Y9itdINoUD15NoP?= =?us-ascii?q?5VtjJjKfbNMVf8Iv/uYn5yN+V5f3ghwUuGN1NIEt31fVzYry76xzcTHhLiKVg9?= =?us-ascii?q?fbytScb6xv663OGq+pDVfx4AxH/kOeszf12KqlD0v9MKgI0qBqsUxx/NpTMcfu?= =?us-ascii?q?1M2WJuKV+WkhL44e+/+Zdi92JbvPd3pOBaVqCvXakiQLlJRAUvN2Qy/IW/pBDH?= =?us-ascii?q?SQyXznQZW2QS1BFPBl6Wv1nBQp7tv36i5aJG0y6AMJizFOhsVA=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0C2AADkO5xYhqrcVdFdGwEBAQMBAQEJA?= =?us-ascii?q?QEBFQEBAQECAQEBAQgBAQEBhH8RB4NSnBGXQoYiAoJ0B0IVAQEBAQEBAQEBAQE?= =?us-ascii?q?SAQEBCAsLCh0vgjMEARYBBIIXAQUjBBkBGx0BAwwGBQsNAgImAgIhAQERAQUBH?= =?us-ascii?q?AYTiVsBAxWjOz+MAoFrGAUBHIMJBYNcChknDVWDNQEBAQEBBQEBAQEBGwIGEnm?= =?us-ascii?q?KMIJRhQmCXwWbODiNeYQZkQWKNIcYFB6BFTWBIB8TCBUVPBeEHiCBbUA1hzCBT?= =?us-ascii?q?gEBAQ?= X-IPAS-Result: =?us-ascii?q?A0C2AADkO5xYhqrcVdFdGwEBAQMBAQEJAQEBFQEBAQECAQE?= =?us-ascii?q?BAQgBAQEBhH8RB4NSnBGXQoYiAoJ0B0IVAQEBAQEBAQEBAQESAQEBCAsLCh0vg?= =?us-ascii?q?jMEARYBBIIXAQUjBBkBGx0BAwwGBQsNAgImAgIhAQERAQUBHAYTiVsBAxWjOz+?= =?us-ascii?q?MAoFrGAUBHIMJBYNcChknDVWDNQEBAQEBBQEBAQEBGwIGEnmKMIJRhQmCXwWbO?= =?us-ascii?q?DiNeYQZkQWKNIcYFB6BFTWBIB8TCBUVPBeEHiCBbUA1hzCBTgEBAQ?= X-IronPort-AV: E=Sophos;i="5.35,349,1484002800"; d="scan'208";a="259523438" Received: from mail-qk0-f170.google.com ([209.85.220.170]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 09 Feb 2017 10:57:35 +0100 Received: by mail-qk0-f170.google.com with SMTP id s140so151570999qke.0 for ; Thu, 09 Feb 2017 01:57:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=fRcEpH7X0NBgtqIrG3uWWap5wAFWCRe7euqtfmCD51g=; b=ain2hLHAk2E3dSksnsyjJsLVx4jn6a01k+x4hcrpxJHAOvS+lCdJkBdWqhmeU4R01Q A7MaU8iInEPDG0ocDH94KUNPtxZIsgKoteQw7+aqkpn6+0KUAho9dEVoJDmkOaY3MrL2 wNtMlpMAKaxCQiTQXdoe6jvDP5LooUbsS1YoVCH2jWCWOfHFLT8bDx9IQZJ+KD6F7BzL RvYAkXQnJAYY0udReIxP/gjrjoaYQ1NEBaxqJiPVJrlxFaw+jMVGJKT+BCv59ARme0iP USR+YXuKTZLzeq12PiiOp0Y68XDnVAFhhVKeWF0Vms3LsRaubgRdD9Uy5RvU24C1PpG8 KBjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=fRcEpH7X0NBgtqIrG3uWWap5wAFWCRe7euqtfmCD51g=; b=GzYrUVXAI4yofsi8AnO0XrD2PuiJucDUhiKTXPDgVIEROz/j/UFwQDtC30B4Afd8b+ 2GtuHq/msxMDMJUl9eCNp9xiA2x33HvE+VuKMploc2swx2zgIrzEjKpywZ7YZ8CJ9Zxh 12YW3vitCPtxLOpsTGfqUufP1qAxaDB1z99GQmdwdS2kRzRmvphpCvVc0ihSGUth2qw0 5nEzle7RJgBTDLXEqmfSh//KWHBRVo1m9cO9sQAgx5otGqEtZsnwrbeg1Rx/5HgedMRd LCZA0OLheSYqb813A0owvdhhzDIlgWHJPb1PyHGuCaP9t7dI49NzEbtdolu6Po0DU4Ja ZqqA== X-Gm-Message-State: AMke39lSyjD8WkwPt8NUyDxF9mvp1ptc0Glausq3wKM9dBCMtKQEASai6U/264CGzyXfGFSWPMVgTS4pm/YMNA== X-Received: by 10.55.92.198 with SMTP id q189mr1849862qkb.86.1486634254434; Thu, 09 Feb 2017 01:57:34 -0800 (PST) MIME-Version: 1.0 Received: by 10.55.88.194 with HTTP; Thu, 9 Feb 2017 01:57:33 -0800 (PST) In-Reply-To: References: From: Jeremy Yallop Date: Thu, 9 Feb 2017 09:57:33 +0000 Message-ID: To: Martin DeMello Cc: "caml-list@inria.fr" Content-Type: text/plain; charset=UTF-8 Subject: Re: [Caml-list] intersections of polymorphic variants On 9 February 2017 at 09:52, Martin DeMello wrote: > In the following code: > > type color = [`Red | `Blue | `Green | `Black | `White] > > let color_index c = match c with > | `Red -> 1 > | `Blue -> 2 > | `Green -> 3 > | `Black -> 4 > | `White -> 5 > > type value = [`Red | `Blue | `Green | `Missing] > > type state = Color of int | Missing > > let state_of_value v = match v with > | `Red -> Color (color_index `Red) > | `Blue -> Color (color_index `Blue) > | `Green -> Color (color_index `Green) > | `Missing -> Missing > > is there any way to write the last function as > > let state_of_value v = match v with > | `Red | `Blue | `Green -> ????? > | `Missing -> Missing let state_of_value v = match v with | (`Red | `Blue | `Green) as c -> Color (color_index c) | `Missing -> Missing