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 7A1B57EC0B for ; Wed, 16 Mar 2016 15:37:31 +0100 (CET) IronPort-PHdr: 9a23:rLzV2h9Wn6NyD/9uRHKM819IXTAuvvDOBiVQ1KB91uMcTK2v8tzYMVDF4r011RmSDdWds6gP1baempujcFJDyK7JiGoFfp1IWk1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXsq3G/pQQfBg/4fVIsYL+lSsiK1Y/pi6ibwN76XUZhvHKFe7R8LRG7/036l/I9ps9cEJs30QbDuXBSeu5blitCLFOXmAvgtI/rpMYwu3cYh/V0/MdFVeD+fr8kBehTBTEidmQ0/9HDtB/ZTALJ6GFKAUsMlR8dLBXE6BXzQ5L8+gv3sOxwwTSbO4WiQrI5HzSv6aFmUQLpjg8IMjc49Cfcjckm3/ETmw6ouxEqm92cW4qSLvcrJq4= Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gjeh2@cam.ac.uk; spf=None smtp.mailfrom=gjeh2@cam.ac.uk; spf=Pass smtp.helo=postmaster@ppsw-33.csi.cam.ac.uk Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of gjeh2@cam.ac.uk) identity=pra; client-ip=131.111.8.133; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gjeh2@cam.ac.uk"; x-sender="gjeh2@cam.ac.uk"; x-conformance=sidf_compatible Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of gjeh2@cam.ac.uk) identity=mailfrom; client-ip=131.111.8.133; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gjeh2@cam.ac.uk"; x-sender="gjeh2@cam.ac.uk"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of postmaster@ppsw-33.csi.cam.ac.uk designates 131.111.8.133 as permitted sender) identity=helo; client-ip=131.111.8.133; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gjeh2@cam.ac.uk"; x-sender="postmaster@ppsw-33.csi.cam.ac.uk"; x-conformance=sidf_compatible; x-record-type="v=spf1" X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BHBABeb+lWk4UIb4NehBlvp3SDJoN8jQeHKzwQAQEBAQEBAQEQAQEBAQkLCQkhL0EBAQMLAoFaghUBBAEjDwEFJCILAQoaAiYCAhATNAYsAod2AQ0IDq9hgWqISwoZgQWEJXyJZoc8gToBBJdRhW+KQoxVjn83gW0BgiI8g3SCUYRMAQEB X-IPAS-Result: A0BHBABeb+lWk4UIb4NehBlvp3SDJoN8jQeHKzwQAQEBAQEBAQEQAQEBAQkLCQkhL0EBAQMLAoFaghUBBAEjDwEFJCILAQoaAiYCAhATNAYsAod2AQ0IDq9hgWqISwoZgQWEJXyJZoc8gToBBJdRhW+KQoxVjn83gW0BgiI8g3SCUYRMAQEB X-IronPort-AV: E=Sophos;i="5.24,345,1454972400"; d="scan'208";a="168971719" Received: from ppsw-33.csi.cam.ac.uk ([131.111.8.133]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Mar 2016 15:37:21 +0100 X-Cam-AntiVirus: no malware found X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from dhcp-10-248-167-119.eduroam.wireless.private.cam.ac.uk ([10.248.167.119]:43006 helo=hennequin-xps.local) by ppsw-33.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.157]:587) with esmtpsa (PLAIN:gjeh2) (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1agCZd-000tD8-g5 (Exim 4.86_36-e07b163) for caml-list@inria.fr (return-path ); Wed, 16 Mar 2016 14:37:21 +0000 Received: from hennequi by hennequin-xps.local with local (Exim 4.86) (envelope-from ) id 1agCZc-0005yP-Uj for caml-list@inria.fr; Wed, 16 Mar 2016 14:37:20 +0000 Content-Type: text/plain; charset=UTF-8; format=flowed From: Guillaume Hennequin To: caml-list In-reply-to: References: Date: Wed, 16 Mar 2016 14:37:20 +0000 Message-Id: <1458138582-sup-3590@hennequin-xps> User-Agent: Sup/0.22.1 Content-Transfer-Encoding: 8bit Sender: "G.J.E. Hennequin" Subject: Re: [Caml-list] automatic differentiation > Markus Mottl has something that sounds pretty cool. > > http://www.composeconference.org/2016/speakers/ I agree, it sounds really useful! I gave a shot at AD in OCaml a couple of months ago, with inspiration coming from F#'s autodiff by Barak Pearlmutter http://diffsharp.github.io/DiffSharp/. I got to a working implementation of forward/reverse/forward-on-reverse but I really struggled with the complexity of the functorial interface I needed to achieve compositionality -- lack of operator overloading somehow makes life difficult here. So really curious to see Markus Mottl's solution. Happy to share my code with anyone interested though. best, Guillaume