From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id p92EpeR2021167 for ; Sun, 2 Oct 2011 16:51:40 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AocBALl5iE7RVdY0imdsb2JhbAAnGqglCCIBAQEKCQ0HEgYhgWwCLAEbHgMSEF0BEQEFASI1h18kmASCWQqLTYJcg009iG4CBAaHGwSMWIcIjRQ9g28 X-IronPort-AV: E=Sophos;i="4.68,477,1312149600"; d="scan'208";a="122468780" Received: from mail-bw0-f52.google.com ([209.85.214.52]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 02 Oct 2011 16:51:33 +0200 Received: by bke5 with SMTP id 5so5924446bke.39 for ; Sun, 02 Oct 2011 07:51:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=oWuW/uJZHCP8oXUgdtjZGDPhq3WsJVILtTKILUIC1Lw=; b=eRA+9E+4X2AKBv7LECP7ADf9UoMMUqYZiuMwHn9yzf3VfcZmDYF5xVTccewFXNnQCG qpjTB11WMMsdHRIQx+UKAIjUNYgeVsMLHSjU0GtcWesuGsomL003GPmKcRs1dEaE0PMo Gj7kjG4HDuUtbBtZ9eE3ukJRgppIczHqZf4+4= MIME-Version: 1.0 Received: by 10.204.144.23 with SMTP id x23mr4645295bku.219.1317567090490; Sun, 02 Oct 2011 07:51:30 -0700 (PDT) Received: by 10.205.82.141 with HTTP; Sun, 2 Oct 2011 07:51:30 -0700 (PDT) Date: Sun, 2 Oct 2011 16:51:30 +0200 Message-ID: From: Adrien To: Caml Mailing List Content-Type: text/plain; charset=ISO-8859-1 Subject: [Caml-list] ANN: lablgtk-react preview Hi, I am pleased and relieved to announce lablgtk-react, a project to ease the use of Functional Reactive Programming (FRP) for lablgtk-based graphical user interfaces. Currently, the project is available as a preview but I am happy with the way it is looking and with the programming style it offers and have decided to announce it in order to receive feedback and comments. Installation is not perfect and best thing for new codes is to try from the src/tests directory. Put simply, FRP makes it possible to write functional code whose inputs and arguments originate from imperative event sources. For instance, you can have a button and execute functional code each time it is clicked, carrying a state of the button between presses. As such, it really only benefits functional languages. Currently, the source distribution contains one example: browser_test. It creates a tab-based web browser where tabs are elements in a zipper and are themselves updated in a functional way. The state which models the browsing session is currently quite simple: the page title and the page URI. However, the page title is shown in the tab label and in the window title, it is also possible to move tabs around and the code is _simple_. My ultimate goal is to make a browser that I can call "intelligent" and spend time on the interesting part instead of becoming mad because of the UI. Also, don't forget that OCaml is multi-paradigm: choose the right one for each task and don't hesitate to mix them. The only dependency is lablgtk2. You can use any FRP implementation that provides "create" and "fold" (a very simple and mostly untested one is provided as "MiniFRP" in the source). The example uses lablwebkit[1]. The project website includes some more infos and a longer introduction: http://lablgtk-react.forge.ocamlcore.org [1] lablwebkit-1.4.0 (compatible with webkit-gtk >= 1.4.0) is available at http://forge.ocamlcore.org/frs/download.php/702/lablwebkit-1.4.0.tar.gz