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 91D587F60D for ; Sun, 26 Mar 2017 11:54:53 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=David.Teller@ens-lyon.org; spf=None smtp.mailfrom=SRS0=SnzY=3D=ens-lyon.org=David.Teller@bounce.ens-lyon.org; spf=Pass smtp.helo=postmaster@sonata.ens-lyon.org Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of David.Teller@ens-lyon.org) identity=pra; client-ip=140.77.166.138; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="SRS0=SnzY=3D=ens-lyon.org=David.Teller@bounce.ens-lyon.org"; x-sender="David.Teller@ens-lyon.org"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of SRS0=SnzY=3D=ens-lyon.org=David.Teller@bounce.ens-lyon.org) identity=mailfrom; client-ip=140.77.166.138; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="SRS0=SnzY=3D=ens-lyon.org=David.Teller@bounce.ens-lyon.org"; x-sender="SRS0=SnzY=3D=ens-lyon.org=David.Teller@bounce.ens-lyon.org"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of postmaster@sonata.ens-lyon.org designates 140.77.166.138 as permitted sender) identity=helo; client-ip=140.77.166.138; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="SRS0=SnzY=3D=ens-lyon.org=David.Teller@bounce.ens-lyon.org"; x-sender="postmaster@sonata.ens-lyon.org"; x-conformance=sidf_compatible; x-record-type="v=spf1" IronPort-PHdr: =?us-ascii?q?9a23=3Ajf01EBeDeLYQvhaV5lVHFYrNlGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxcW5Yh7h7PlgxGXEQZ/co6odzbGH7+a4ASQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9GiTe5br5+Ngm6oRnMvcQKnIVuLbo8xAHUqXVSYe?= =?us-ascii?q?RWwm1oJVOXnxni48q74YBu/SdNtf8/7sBMSar1cbg2QrxeFzQmLns65Nb3uhnZ?= =?us-ascii?q?TAuA/WUTX2MLmRdVGQfF7RX6XpDssivms+d2xSeXMdHqQb0yRD+t6LtmRRHqhS?= =?us-ascii?q?oJLjI17G7agdF0gK9bvB6tohpyyJPWbo6ILvpzZrndc84ES2pPXshfVCJPDY2z?= =?us-ascii?q?YIQNE+UPMv1Vr5X/qlYUsReyGQehCeHpxzRVhnH2x6o60+E5HA/IxgMgAdMOv2?= =?us-ascii?q?nJp9vrKqgSVeS1w7fSzT7eaP5Y1y3y6JbJch88u/2CQ6x/cc7VyUYxDQPIlUuf?= =?us-ascii?q?qYr+Pz+M0uQMs2+b7+x6WeKokW4npBh8rz6yzckijYnJg5gaylHC9Shh3ok1P8?= =?us-ascii?q?e4R1RnYd6lCZtQqj+VO5FqTcMiW21otyc6yqEGuZ6mZycG0pUnxxnZZveacIaI?= =?us-ascii?q?+gruWPueLDtknn5oerCyiwyv/UWhy+DwTNS43VhJoyZdkdTAqGoB2h3S58SdS/?= =?us-ascii?q?Zw8V2t1DmO2g3V9+pKO1o7lbDBJJ4k2rMwloQcsUDEHiLug0X2i6mWeV84+uey?= =?us-ascii?q?8ejofLPmpoSFO49wigD+NaIulta4AeQiPQgCR2mb+eKi273/5UD1XbpHguEsnq?= =?us-ascii?q?Tbsp3WP9kXq6+4DgNPz4ou5RWyAy+j0NsCnHkHKFxFeAiAj4jsI1zAPez2A+qj?= =?us-ascii?q?j1m0jTlrwfHHMb/5D5jDIHbOiKnufbBm60JFzAoyzddf55ROBrEGOvLzVVf8ut?= =?us-ascii?q?LCAR8nMgy73vzrBstj2YMaXWKAHLWZPbjJvl+P++IvJfWDa5EPtDnjLfgl/Ofi?= =?us-ascii?q?jXs5mF8ae6mlx5wXaGq3Hvh+OUWWfWLsgssdEWcNpgcxUPbliFiGUTJKY3ayXr?= =?us-ascii?q?k85i0gBYK9DYbDQ5itj6ab0Ce6GJ1WfGFGBUqWHXfmbYXXE8sLPSmbJ8sklj0f?= =?us-ascii?q?SZCgTZUg3FegrlzAxqJjP9bTrwERq5PvkuR44+nejzk/8ycxC9Wa1SeKVW4nsH?= =?us-ascii?q?kPQmoa1b5+rQRBx1OH3LIw19BRC91foc9EVgM3L7bRyfc/D8H1XETGZNjfGwXu?= =?us-ascii?q?ecmvHTxkFoF5+NQJeUsoRo2v?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0BdDAB5jtdYbIqmTYxcHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBg3oQhG2LApBal3+CRockFAEBAQEBAQEBAQEBEg0WBFlCAQQJAYF?= =?us-ascii?q?iCgyCTQEFIzA2CxgCAiYCAlcTCAEBigMECqpwgiaEaIYAgQuFQ4IFgUCBKoUgg?= =?us-ascii?q?jqCXwWHQpUZhgtwjTVsjmGTYwI2gSUkFixJgSaCYgyCRoMmhAGDRAEBAQ?= X-IPAS-Result: =?us-ascii?q?A0BdDAB5jtdYbIqmTYxcHAEBBAEBCgEBFwEBBAEBCgEBg3o?= =?us-ascii?q?QhG2LApBal3+CRockFAEBAQEBAQEBAQEBEg0WBFlCAQQJAYFiCgyCTQEFIzA2C?= =?us-ascii?q?xgCAiYCAlcTCAEBigMECqpwgiaEaIYAgQuFQ4IFgUCBKoUggjqCXwWHQpUZhgt?= =?us-ascii?q?wjTVsjmGTYwI2gSUkFixJgSaCYgyCRoMmhAGDRAEBAQ?= X-IronPort-AV: E=Sophos;i="5.36,225,1486422000"; d="scan'208";a="266236624" Received: from domu-toccata.ens-lyon.fr (HELO sonata.ens-lyon.org) ([140.77.166.138]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Mar 2017 11:54:53 +0200 Received: from localhost (localhost [127.0.0.1]) by sonata.ens-lyon.org (Postfix) with ESMTP id DA5232010F for ; Sun, 26 Mar 2017 11:54:52 +0200 (CEST) Received: from sonata.ens-lyon.org ([127.0.0.1]) by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pZW02N99IBx1 for ; Sun, 26 Mar 2017 11:54:52 +0200 (CEST) Received: from Bigorneau-Ninja.local (dau94-2-82-66-64-46.fbx.proxad.net [82.66.64.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by sonata.ens-lyon.org (Postfix) with ESMTPSA id 9E9BD20104 for ; Sun, 26 Mar 2017 11:54:52 +0200 (CEST) Reply-To: David.Teller@ens-lyon.org To: caml-list@inria.fr References: <20170326094804.GA51737@pllab.is.ocha.ac.jp> From: David Teller Message-ID: <64d2ed67-fcd4-192c-a535-e9a254fbd3a5@ens-lyon.org> Date: Sun, 26 Mar 2017 11:54:51 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.0 MIME-Version: 1.0 In-Reply-To: <20170326094804.GA51737@pllab.is.ocha.ac.jp> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Caml-list] React.js programming in OCaml? If I recall correctly, React.js is actually a JS port of the following OCaml library: http://erratique.ch/software/react So that might be what you're looking for :) On 26/03/17 11:48, Kenichi Asai wrote: > What is the best way to do react.js programming as introduced in > > https://facebook.github.io/react/ > > in OCaml? I found the tutorial on the above page written very well, > and I want to do the same thing in OCaml at the similar abstraction > level as in JS. Any information is welcome. Thanks in advance. >