From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 421B57EF5E for ; Wed, 13 Jul 2016 11:34:53 +0200 (CEST) IronPort-PHdr: 9a23:smPOsx1bCgKXZTdlsmDT+DRfVm0co7zxezQtwd8ZsegQLvad9pjvdHbS+e9qxAeQG96Ks7QY06GP6ejJYi8p2d65qncMcZhBBVcuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL2PbrnD61zMOABK3bVMzfbWtXNKKxJ3tn8mJuLTrKz1SgzS8Zb4gZD6Xli728vcsvI15N6wqwQHIqHYbM85fxGdvOE7B102kvpT41NdZ/i9Ro/Ms8dJbGeW/JvxgDO8QMDNzGGkw4IXPtALfBV+E734YF2EXiQZgAg7f7Ri8UI2n4QXgse8o+yCZNMHrBeQ3UDer47otSBbmgSEOMTcR/2Tei8g2h6Ve9kHy7ydjypLZNdnGfMF1ebnQKJZDHTJM Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=kakadu.hafanana@gmail.com; spf=Pass smtp.mailfrom=kakadu.hafanana@gmail.com; spf=None smtp.helo=postmaster@mail-oi0-f41.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of kakadu.hafanana@gmail.com) identity=pra; client-ip=209.85.218.41; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="kakadu.hafanana@gmail.com"; x-sender="kakadu.hafanana@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of kakadu.hafanana@gmail.com designates 209.85.218.41 as permitted sender) identity=mailfrom; client-ip=209.85.218.41; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="kakadu.hafanana@gmail.com"; x-sender="kakadu.hafanana@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-oi0-f41.google.com) identity=helo; client-ip=209.85.218.41; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="kakadu.hafanana@gmail.com"; x-sender="postmaster@mail-oi0-f41.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BXAACgCoZXhinaVdFchRAGpgKHUI0yh0QHPBABAQEBAQEBAREBAQEICwsJIS+CMgQBEgGCKxEdARseAxIQDwImAiQBEQEFASI1h3MBAxehB4IHgTE+MYs7gWqCWgWFSgoZJw1Sg3UCBhBxkTiCWgWOB3GKJIImjDGDNIt7SI4QEh6BDzWBV2KBWjkyiTcBAQE X-IPAS-Result: A0BXAACgCoZXhinaVdFchRAGpgKHUI0yh0QHPBABAQEBAQEBAREBAQEICwsJIS+CMgQBEgGCKxEdARseAxIQDwImAiQBEQEFASI1h3MBAxehB4IHgTE+MYs7gWqCWgWFSgoZJw1Sg3UCBhBxkTiCWgWOB3GKJIImjDGDNIt7SI4QEh6BDzWBV2KBWjkyiTcBAQE X-IronPort-AV: E=Sophos;i="5.28,356,1464645600"; d="scan'208";a="184727512" Received: from mail-oi0-f41.google.com ([209.85.218.41]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 13 Jul 2016 11:34:52 +0200 Received: by mail-oi0-f41.google.com with SMTP id w18so61844305oiw.3 for ; Wed, 13 Jul 2016 02:34:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=1/Q+HfGK96FQXjBzrZ2Q+lnTk/k1p1Htua55EL/Aso8=; b=TGBa3OGXiaGhjNfIu2M6sXyPAV3GmMz0P3CP989SiKhNI15blc3Ko0Yq/2mZOmW0OK uGc7WO1q9lysYQ0tlPpT8nBYJYmAvMb9wEXPsUo2JpMfcxR6XsuQaHCs/yEj5W4avW+P RPsoPGK3ul0ZDb7Bh/e2SfZjnYtm3biRXY4U9rSi3vZHW1ft5u8lcvzk2jGuoi4uXRzf L0VBN2r1RJCsGZIm5aeEOvO45w//avCK5N3GcbsF3a9iV66TqeKhMaBtS92Hx8nZ1bzS uFSb2Wb2V+1c9+C7VazKfbrio3+8WgD3ktg0f3MJfn9HbJqPL33ao0jOBuUARXAB3XId 66qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=1/Q+HfGK96FQXjBzrZ2Q+lnTk/k1p1Htua55EL/Aso8=; b=JWQu76Z8D3sGjJ7imTgIKJZpVHB1IF64uX9aRbPA9fcyAo0Qt00Xo4UsekTJvSGM3P ypmb2+Zf/Y675fkD64N9lP/S6zxpEuUH0atXFDhDe+ujzM8SEntm7+yt5egraUDVOShD kKOR0aOOlRa+TmlJNhAIOgFZRC+/oUaPL0NWLqwD2jG3s0LJl2adg/v/EFbD8LoBvBTt 5rrr/PG2QphKKvb7ZS4MRPtbPNJrJdqGSLbKprhQMLD0VZaamo20COQUbECITvvxdZie Fibq5BbQ6+9jWhEsloFcOdAyriUjKPQzHZhUgwtfVV7PTkuoFYplJROy/zUmTqzcEVXj Wj6A== X-Gm-Message-State: ALyK8tKBoNPfDnXf1RWQcR23vKgd3rWwIP4VTbAyRqYXKAnXkGu9+QT530R+ef4CDv7t0pLyW0LjgxlwhvKouw== X-Received: by 10.157.40.136 with SMTP id s8mr4523324ota.7.1468402490802; Wed, 13 Jul 2016 02:34:50 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.37.121 with HTTP; Wed, 13 Jul 2016 02:34:31 -0700 (PDT) From: Kakadu Date: Wed, 13 Jul 2016 12:34:31 +0300 Message-ID: To: Caml List Content-Type: text/plain; charset=UTF-8 Subject: [Caml-list] Ppx_deriving and plugins for plugins (aka metaplugins) Salut, fellas Let's say I want to create a few derivers which should generate two parts of code: 1) specific for this family of derivers; 2) specific for concrete deriver. For example [@@deriving der_family { deriver1; deriver2 }] should generate (* XXX code specific for family *) (* ZZZ1 code which relies on XXX and which is specific for deriver1 *) (* ZZZ2 code which relies on XXX and which is specific for deriver2 *) And [@@deriving der_family { deriver1}] should generate (* XXX code specific for family *) (* YYY code which relies on XXX and which is specific for deriver1 *) This approach should work well until I wish to support [@@deriving der_family { deriver3 }] as a separate project. AFAIU, at the moment ppx_deriving chooses plugin by it's exported name (i.e. der_family in [@@deriving der_family { deriver3 }] ) but it seems that I need some parametrization over deriver parameters. Is it already supported? Is it easy to implement? Or I should do this in a more straightforward manner? Happy hacking, Kakadu