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 7568F7FC41 for ; Mon, 28 Sep 2015 19:38:42 +0200 (CEST) IronPort-PHdr: 9a23:B76XohdkpBJCgVgcaJTwNMGElGMj4u6mDksu8pMizoh2WeGdxc6/ZB7h7PlgxGXEQZ/co6odzbGG7+a9BCdZuM3JmUtBWaIPfidNsd8RkQ0kDZzNImzAB9muURYHGt9fXkRu5XCxPBsdMs//Y1rPvi/6tmZKSV3BPAZ4bt74BpTVx5zukbvip9uOPk4R3WH1SIgxBSv1hD2ZjtMRj4pmJ/R54TryiVwMRd5rw3h1L0mYhRf265T41pdi9yNNp6BprJYYAu2pN5g/GJtzBTEiezQ+7cjv8B3CVhen530GU2xQnAAeUCbf6xSvZY/wqCzh/sd52S6COtDySqt8DS+v66ZsUBj1oCgCPj89tmrQj5oj3+pgvBu9qkknkMbva4aPOa8mcw== Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=seliopou@gmail.com; spf=Pass smtp.mailfrom=seliopou@gmail.com; spf=None smtp.helo=postmaster@mail-la0-f49.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of seliopou@gmail.com) identity=pra; client-ip=209.85.215.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="seliopou@gmail.com"; x-sender="seliopou@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of seliopou@gmail.com designates 209.85.215.49 as permitted sender) identity=mailfrom; client-ip=209.85.215.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="seliopou@gmail.com"; x-sender="seliopou@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-la0-f49.google.com) identity=helo; client-ip=209.85.215.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="seliopou@gmail.com"; x-sender="postmaster@mail-la0-f49.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BdAgDReglWlDHXVdFeg0M1aQaqZoZjjXiFeYFFBzwQAQEBAQEBAQEQAQEBAQcLCwkfMIIdgiARHQEbHgMSCQc3AiQBEQEFASIbGod2AQMSDacJggWBMD4xi0eBbIJ5igUKGScNVoQ2DBoBBQ6GZYoGgnSBQwWVcIUVh3qCFYwsizISI4EXOIIvghkiM4khAQEB X-IPAS-Result: A0BdAgDReglWlDHXVdFeg0M1aQaqZoZjjXiFeYFFBzwQAQEBAQEBAQEQAQEBAQcLCwkfMIIdgiARHQEbHgMSCQc3AiQBEQEFASIbGod2AQMSDacJggWBMD4xi0eBbIJ5igUKGScNVoQ2DBoBBQ6GZYoGgnSBQwWVcIUVh3qCFYwsizISI4EXOIIvghkiM4khAQEB X-IronPort-AV: E=Sophos;i="5.17,603,1437429600"; d="scan'208";a="148845123" Received: from mail-la0-f49.google.com ([209.85.215.49]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 28 Sep 2015 19:38:41 +0200 Received: by laer8 with SMTP id r8so39731203lae.2 for ; Mon, 28 Sep 2015 10:38:41 -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:content-type; bh=WNy7iNzw3EhthvPJmJDXqUeq5zGHzKirvPgGJ5MFMlg=; b=ywJ1F1stkCQAVa7Es4gb3QIqFd+gBCGakmCCSs7WrWVkedDLZoDi6LLI0XLA/3itoR V0OZkXeBLucEMv+YbkemrnQ4Vp9p+geNUAob53mwOFD7O3pUIvmLXE2B0lTZkACDIMWX MX+7sfrJMoYqCOtPGnxV8G/z1AM7flC042dQJ6iZWYbOPCo9dyEhD8eDiKMGBJBCy8BE FpERXRTa7f5Oybz58NRr+cfj5TFD8+cIFpZvzJIp/HHu1+oN14jC5DI27aGVHX6UlTL+ OKi0G/olfueSZGnAGJhpvEM5r7S3pgG9leFBkJSId91vovUDKv4MaoO84FfDTKz758eZ qunw== X-Received: by 10.152.23.138 with SMTP id m10mr5862376laf.105.1443461920937; Mon, 28 Sep 2015 10:38:40 -0700 (PDT) MIME-Version: 1.0 Received: by 10.25.164.210 with HTTP; Mon, 28 Sep 2015 10:38:21 -0700 (PDT) From: Spiros Eliopoulos Date: Mon, 28 Sep 2015 13:38:21 -0400 Message-ID: To: OCaml Content-Type: multipart/alternative; boundary=089e0160a66a0b5b450520d22b06 Subject: [Caml-list] ANN: ocaml-d3 --089e0160a66a0b5b450520d22b06 Content-Type: text/plain; charset=UTF-8 Hey there lists, I'm happy to announce the initial release of ocaml-d3: https://github.com/seliopou/ocaml-d3 ocaml-d3 provides OCaml bindings to D3.js[1], via js_of_ocaml. Using this library will enable you to create type-safe, composable widgets using HTML, SVG, and CSS. The binds at the moment only cover the Core Selection API. For visualization uses cases, the additional library code will have to be manipulated directly with the js_of_ocaml FFI. These are the second languages bindings I've written for D3.js. The first were for the Elm programming language[3]. Both are quite similar to each other in terms of their treatment of operations and types. However, due to the computational model of Elm, the bindings for that language do not allow you to directly get a handle on DOM nodes. The OCaml version lifts this restriction. But, I would suggest using that feature sparingly. Here's a TodoMVC example to help you get started: https://github.com/seliopou/ocaml-d3/blob/master/examples/todo.ml Issues and pull requests welcomed. -Spiros E. [1]: http://d3js.org/ [3]: https://github.com/seliopou/elm-d3 --089e0160a66a0b5b450520d22b06 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hey there lists,

I'm happy to annou= nce the initial release of ocaml-d3:

=C2=A0=C2=A0<= a href=3D"https://github.com/seliopou/ocaml-d3" target=3D"_blank">https://g= ithub.com/seliopou/ocaml-d3

ocaml-d3 provides = OCaml bindings to D3.js[1], via js_of_ocaml. Using this library will enable= you to create type-safe, composable widgets using HTML, SVG, and CSS. The = binds at the moment only cover the Core Selection API. For visualization us= es cases, the additional library code will have to be manipulated directly = with the js_of_ocaml FFI.

These are the second lan= guages bindings I've written for D3.js. The first were for the Elm prog= ramming language[3]. Both are quite similar to each other in terms of their= treatment of operations and types. However, due to the computational model= of Elm, the bindings for that language do not allow you to directly get a = handle on DOM nodes. The OCaml version lifts this restriction. But, I would= suggest using that feature sparingly.

Here's = a TodoMVC example to help you get started:




--089e0160a66a0b5b450520d22b06--