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 mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id CEB9482355 for ; Wed, 3 Jan 2018 11:23:09 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=nicolas.ojeda.bar@lexifi.com; spf=SoftFail smtp.mailfrom=nicolas.ojeda.bar@lexifi.com; spf=None smtp.helo=postmaster@vrout10.yaziba.net Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of nicolas.ojeda.bar@lexifi.com) identity=pra; client-ip=185.56.204.32; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="nicolas.ojeda.bar@lexifi.com"; x-sender="nicolas.ojeda.bar@lexifi.com"; x-conformance=sidf_compatible Received-SPF: SoftFail (mail2-smtp-roc.national.inria.fr: domain of nicolas.ojeda.bar@lexifi.com is inclined to not designate 185.56.204.32 as permitted sender) identity=mailfrom; client-ip=185.56.204.32; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="nicolas.ojeda.bar@lexifi.com"; x-sender="nicolas.ojeda.bar@lexifi.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@vrout10.yaziba.net) identity=helo; client-ip=185.56.204.32; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="nicolas.ojeda.bar@lexifi.com"; x-sender="postmaster@vrout10.yaziba.net"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3A/bvN2RykgYwWh1fXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?2+MSIJqq85mqBkHD//Il1AaPAd2Craocw8Pt8InYEVQa5piAtH1QOLdtbDQizf?= =?us-ascii?q?ssogo7HcSeAlf6JvO5JwYzHcBFSUM3tyrjaRsdF8nxfUDdrWOv5jAOBBr/KRB1?= =?us-ascii?q?JuPoEYLOksi7ze+/94HObwlSmDaxfa55IQmrownWqsQYm5ZpJLwryhvOrHtIeu?= =?us-ascii?q?BWyn1tKFmOgRvy5dq+8YB6/ShItP0v68BPUaPhf6QlVrNYFygpM3o05MLwqxbO?= =?us-ascii?q?SxaE62YGXWUXlhpIBBXF7A3/U5zsvCb2qvZx1S+HNsDtU7s6RSqt4LtqSB/wiS?= =?us-ascii?q?cIKTg58H3MisdtiK5XuQ+tqwBjz4LRZoyeKfhwcb7Hfd4CR2VBUMZfWSJCDI2h?= =?us-ascii?q?cYUAE/EMMvxEo4TnvVYCsQeyCAuqCejyyjFInHj23agi3uo5EAHJwAsgH9YMt3?= =?us-ascii?q?TPtNr7LaUSXv6ow6bS1TrOcvZR2S3g44XPdBAhoO2DXbV0ccXL0kkjDQTFjleO?= =?us-ascii?q?poP4JTyZzP8CvHKB7+d7UeKglWEmqwB/ojiu3Msjlo7JhocMx13C6C53zoE1Jd?= =?us-ascii?q?iiR056Z96pCJpQtyeAN4t3WMwuWW9ouDw8x7YbupC7ZDAHxIkkyhPfcfCKc4mF?= =?us-ascii?q?7gj9WOqNLjp0nnxodKynixqs7UStzvfwW8q03VpQsCZJj9jBumoQ2xHR98SKTO?= =?us-ascii?q?Z28F271jaVzQ/T7/lJIUAqmqrfLJ4s2qAwloAUsUTeAi/6hVn6gLWWd0o+++mo?= =?us-ascii?q?6v/oba/8qp+aKYB0lhnyMqUomsOhHeQ1KhUCUmub9Oim1LDu/Ff1TKtWgvA5iK?= =?us-ascii?q?XUvo7WKdwepqGjAg9V1ogj6wy4DzejyNkYm3gHI05CeBKDlYfpIEvCIPf6Dfih?= =?us-ascii?q?nlujii1nyOvcMb37GZjNKmbMkbjgfbZz6k5Q0hY8zdda555MELEOPOrzWlPttN?= =?us-ascii?q?zfFhI2Lxa7w+PjCNlk0oMeWHmPArOCPaPJsV6I4/ovLPOWaI8Uvjb9Mfkl6OT0?= =?us-ascii?q?gX83g18RZayp3ZwKZ3+mBvlmOECZYWb0gtcGDGcKoll2cOu/pUONXDhCL0y1Qq?= =?us-ascii?q?g94Do7FI+nC8+XVICghq2IhX/jQbVZY2lHDhaHFnK+JKueXPJZTiOZJcvoiQsj?= =?us-ascii?q?V7WtQrgLWQvm4An7wL1jJ/GS/S8VuZul3tFvz+nehRA89Hp/CMHLgDLFdH19gm?= =?us-ascii?q?5dH2x+56t4u0Eojw7biaU=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0C9AACgrUxafSDMOLldGwEBAQEDAQEBC?= =?us-ascii?q?QEBAYQkdCcHhACBOZgFggEUiHSONoIBCiOFGAKEKQdDFAEBAQEBAQEBAQESAQE?= =?us-ascii?q?LFAhXQg4BgWckAYJHAQIBAQEjBFIFCwsEBwMtBwICIQESAQUBHAYTihYDDQgEA?= =?us-ascii?q?QulF0CMEIFtOoc/DYELgWUBAQEHAQEBAQEjhAyCEoZtgms5DIE2g0+CZQWZY4k?= =?us-ascii?q?uPYgDiDWEfoJ8kQWNJT5CiEsUBSCBFQIPJ4Fxb1IyBoFxCYISboFPdwGFL4NmA?= =?us-ascii?q?QEB?= X-IPAS-Result: =?us-ascii?q?A0C9AACgrUxafSDMOLldGwEBAQEDAQEBCQEBAYQkdCcHhAC?= =?us-ascii?q?BOZgFggEUiHSONoIBCiOFGAKEKQdDFAEBAQEBAQEBAQESAQELFAhXQg4BgWckA?= =?us-ascii?q?YJHAQIBAQEjBFIFCwsEBwMtBwICIQESAQUBHAYTihYDDQgEAQulF0CMEIFtOoc?= =?us-ascii?q?/DYELgWUBAQEHAQEBAQEjhAyCEoZtgms5DIE2g0+CZQWZY4kuPYgDiDWEfoJ8k?= =?us-ascii?q?QWNJT5CiEsUBSCBFQIPJ4Fxb1IyBoFxCYISboFPdwGFL4NmAQEB?= X-IronPort-AV: E=Sophos;i="5.45,501,1508796000"; d="scan'208,217";a="307498029" Received: from vrout10.yaziba.net ([185.56.204.32]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 03 Jan 2018 11:23:08 +0100 Received: from mtaout10.int.yaziba.net (mtaout10.int.yaziba.net [10.4.20.36]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by vrout10.yaziba.net (mx10.yaziba.net) with ESMTPS id 0B2AC520B0 for ; Wed, 3 Jan 2018 11:23:08 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mtaout10.int.yaziba.net (Postfix) with ESMTP id 2C5CB1602BE for ; Wed, 3 Jan 2018 11:23:08 +0100 (CET) X-Virus-Scanned: amavisd-new at Received: from mtaout10.int.yaziba.net ([127.0.0.1]) by localhost (mtaout10.int.yaziba.net [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id EASBAhKRFYwq for ; Wed, 3 Jan 2018 11:23:08 +0100 (CET) Received: from mail-qt0-f171.google.com (mail-qt0-f171.google.com [209.85.216.171]) by mtaout10.int.yaziba.net (Postfix) with ESMTPSA id E15AF160117 for ; Wed, 3 Jan 2018 11:23:07 +0100 (CET) Received: by mail-qt0-f171.google.com with SMTP id k19so1534708qtj.6 for ; Wed, 03 Jan 2018 02:23:07 -0800 (PST) X-Gm-Message-State: AKGB3mIWtPq4iG6geTrJlNWXGb/1wqciGOuTczAjclMqzrxNAr/nOKO5 c9ZkGTHJZvXqiHfHANQr1JXR8fqH+qn1XystS7g= X-Google-Smtp-Source: ACJfBot3UB+kkN63EYF9mqafuVYFfiBybyK0rqxZ5yMs/JR9HA5XJ9DItdRYcIjdD0Ep46W0cQGs4TVw9e49XV1eJ3s= X-Received: by 10.200.22.183 with SMTP id r52mr1078343qtj.101.1514974986940; Wed, 03 Jan 2018 02:23:06 -0800 (PST) MIME-Version: 1.0 Received: by 10.200.24.163 with HTTP; Wed, 3 Jan 2018 02:22:46 -0800 (PST) In-Reply-To: References: From: =?UTF-8?Q?Nicol=C3=A1s_Ojeda_B=C3=A4r?= Date: Wed, 3 Jan 2018 11:22:46 +0100 X-Gmail-Original-Message-ID: Message-ID: To: Evgeny Roubinchtein Cc: OCaml Mailing List Content-Type: multipart/alternative; boundary="94eb2c123524f0b4e70561dc992a" X-DRWEB-SCAN: ok X-VRSPAM-SCORE: -100 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrgedtuddrjeefgddujecutefuodetggdotefrucfrrhhofhhilhgvmecuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepjghfhfffkffuvfgtsegrtderredttdejnecuhfhrohhmpefpihgtohhljohspgfqjhgvuggrpgeumohruceonhhitgholhgrshdrohhjvggurgdrsggrrheslhgvgihifhhirdgtohhmqeenucffohhmrghinhepihhnrhhirgdrfhhrnecukfhppedvtdelrdekhedrvdduiedrudejudenucfrrghrrghmpehmohguvgepshhmthhpohhuth X-VRSPAM-EXTCAUSE: mhhouggvpehsmhhtphhouhht Subject: Re: [Caml-list] A question about "8.9 First-class modules -> Advanced examples" section of the reference manual --94eb2c123524f0b4e70561dc992a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Dear Evgeny, I am not sure how up-to-date they are, but you may be interested in the following notes by Xavier: https://caml.inria.fr/pub/papers/xleroy-recursive_modules-03.pdf Cheers, Nicol=C3=A1s On Fri, Dec 22, 2017 at 10:13 AM, Evgeny Roubinchtein wrote: > Dear OCaml users and developers, > > I find the "Advanced examples" sub-section of the "First-class modules" > section in the reference manual (http://caml.inria.fr/pub/ > docs/manual-ocaml/extn.html#sec244) to be a bit short on motivation. > > I appreciate that it may be, "possible to parametrize some code over the > implementation of a module without using a functor", but I am having > trouble imagining why one would want to do such a thing. Also, the > "without using a functor" part comes across (to me) as a bit hollow, given > that the example provided _does_ in fact use [Set.Make] functor: it just > hides the invocation of that functor inside the definition of the > [make_set] function, so it reads (to me) like just a round-about way to > invoke the [Set.Make] functor. > > Also, was a description of first-class modules in OCaml published in > either a paper or a thesis, or perhaps a journal article? > > Thank you in advance! > > -- > Best, > Evgeny ("Zhenya") > --94eb2c123524f0b4e70561dc992a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Dear Evgeny,

I am not sure how up-to-da= te they are, but you may be interested in the following notes by Xavier:


Cheers,
Nicol=C3=A1s

On Fri, Dec 22, 2017 at 10:13 AM, Evgeny R= oubinchtein <zhenya1007@gmail.com> wrote:
Dear OCaml users an= d developers,

I find the "Advanced examples" sub-sec= tion of the "First-class modules" section in the reference manual= (http://caml.inria.fr/pub/docs/manual-ocaml/extn.html#= sec244) to be a bit short on motivation.=C2=A0

=
I appreciate that it may be, "possible to parametrize some = code over the implementation of a module without using a functor", but I am having t= rouble imagining why one would want to do such a thing.=C2=A0 Also, the &qu= ot;without using a functor" part comes across (to me) as a bit hollow,= given that the example provided _does_ in fact use [Set.Make] functor: it = just hides the invocation of that functor inside the definition of the [mak= e_set] function, so it reads (to me) like just a round-about way to invoke = the [Set.Make] functor.

Also, was a descriptio= n of first-class modules in OCaml published in either a paper or a thesis, = or perhaps a journal article?

Thank you in advance!

--
Best,
Evgeny ("Zhenya&quo= t;)

--94eb2c123524f0b4e70561dc992a--