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 D7A667F0BA for ; Mon, 29 Aug 2016 15:53:30 +0200 (CEST) IronPort-PHdr: 9a23:2VHQ8BVoXCZWKY1q7BF7qi6vUYDV8LGtZVwlr6E/grcLSJyIuqrYZhOCt8tkgFKBZ4jH8fUM07OQ6PG5HzBcqsjc+DBaKdoXBkdD0Z1X1yUbQ+e9QXXhK/DrayFoVO9jb3RCu0+BDE5OBczlbEfTqHDhpRQbGxH4KBYnbr+tQt2asc272qiI9oHJZE0Q3XzmMOo0cEn981iZ9pFPx9AzcuBpklqBi0ALUtwe/XlvK1OXkkS0zeaL17knzR5tvek8/dVLS6TwcvdwZ7VZCDM7LzJ9v5Wz5lGQBTeIs3AVV2FTlhtTH0CR5xj/WtL1szDmnut7wiiTe8PsG+MaQzOnuotiUh7vwBsKNi408Xvewph8hbhap1S9qh1vzo/OaamTMPdvYq7bO9gdQDwSDY5qSyVdD9bkPMM0BO0bMLMAog== Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=dario.teixeira@nleyten.com; spf=None smtp.mailfrom=dario.teixeira@nleyten.com; spf=None smtp.helo=postmaster@relay4-d.mail.gandi.net Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of dario.teixeira@nleyten.com) identity=pra; client-ip=217.70.183.196; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="dario.teixeira@nleyten.com"; x-sender="dario.teixeira@nleyten.com"; x-conformance=sidf_compatible Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of dario.teixeira@nleyten.com) identity=mailfrom; client-ip=217.70.183.196; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="dario.teixeira@nleyten.com"; x-sender="dario.teixeira@nleyten.com"; x-conformance=sidf_compatible Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@relay4-d.mail.gandi.net) identity=helo; client-ip=217.70.183.196; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="dario.teixeira@nleyten.com"; x-sender="postmaster@relay4-d.mail.gandi.net"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0D+AgBpPcRXhsS3RtlcHQEFARcBFwGCeQEBAQEBgXikaJU3h2c8EAEBAQEBAQEBAQEBEgEBAQgLCwkZL4IyGIJFEQJTgSobiDyeEZ9Nhi6Id4VyBZlPgWSNQI9ckDsCNYIBAQoBAQFVgViGPH8BAQE X-IPAS-Result: A0D+AgBpPcRXhsS3RtlcHQEFARcBFwGCeQEBAQEBgXikaJU3h2c8EAEBAQEBAQEBAQEBEgEBAQgLCwkZL4IyGIJFEQJTgSobiDyeEZ9Nhi6Id4VyBZlPgWSNQI9ckDsCNYIBAQoBAQFVgViGPH8BAQE X-IronPort-AV: E=Sophos;i="5.28,596,1464645600"; d="scan'208";a="191386107" Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Aug 2016 15:53:30 +0200 Received: from mfilter42-d.gandi.net (mfilter42-d.gandi.net [217.70.178.172]) by relay4-d.mail.gandi.net (Postfix) with ESMTP id CBD1A1720B4 for ; Mon, 29 Aug 2016 15:53:29 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter42-d.gandi.net Received: from relay4-d.mail.gandi.net ([IPv6:::ffff:217.70.183.196]) by mfilter42-d.gandi.net (mfilter42-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id lOstjS8LKedW for ; Mon, 29 Aug 2016 15:53:28 +0200 (CEST) X-Originating-IP: 10.58.1.141 Received: from webmail.gandi.net (webmail1-d.mgt.gandi.net [10.58.1.141]) (Authenticated sender: dario.teixeira@nleyten.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPA id 4F9371720D3 for ; Mon, 29 Aug 2016 15:53:28 +0200 (CEST) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Mon, 29 Aug 2016 14:53:28 +0100 From: Dario Teixeira To: caml-list Message-ID: X-Sender: dario.teixeira@nleyten.com User-Agent: Roundcube Webmail/1.1.2 Subject: [Caml-list] Functorising over Cohttp's backends Hi, Suppose I have a function "make_callback" which creates a callback ready to be given to Cohttp's Server.make. Here's its signature: type callback = Cohttp_lwt_unix.Server.IO.conn * Cohttp.Connection.t -> Cohttp.Request.t -> Cohttp_lwt_body.t -> (Cohttp.Response.t * Cohttp_lwt_body.t) Cohttp_lwt_unix.Server.IO.t val make_callback: unit -> callback Note that it's tied to the Lwt+Unix instantiation of Cohttp. Now, I wish to make it more generic, so it can be used with the Async backend, for instance. There's more to it than just using a functor for abstracting over the IO monad, unfortunately. In particular, the connection type and the body are also backend-dependent. Anyway, Cohttp's API is notoriously hard to navigate. Is the generic signature I'm looking for already defined somewhere, or are the backends so distinct that I might as well forget about functorising the interface and thus force the Lwt+Unix backend on my API? (It's the only backend I use myself...) Thanks in advance! Best regards, Dario Teixeira