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 3C6D8820A1 for ; Thu, 12 Sep 2013 05:26:07 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of ivg@ieee.org) identity=pra; client-ip=209.85.215.43; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="ivg@ieee.org"; x-sender="ivg@ieee.org"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of ivg@ieee.org designates 209.85.215.43 as permitted sender) identity=mailfrom; client-ip=209.85.215.43; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="ivg@ieee.org"; x-sender="ivg@ieee.org"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-la0-f43.google.com) identity=helo; client-ip=209.85.215.43; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="ivg@ieee.org"; x-sender="postmaster@mail-la0-f43.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoYBAKMzMVLRVdcrm2dsb2JhbABbxC6BHxYOAQEBAQEGCwsJFCiCJQEBBAE6PxALISUPAQQgAQUBIhOHfAYEoHueDY9qB4QdA4kxjkiQCUGETw X-IPAS-Result: AoYBAKMzMVLRVdcrm2dsb2JhbABbxC6BHxYOAQEBAQEGCwsJFCiCJQEBBAE6PxALISUPAQQgAQUBIhOHfAYEoHueDY9qB4QdA4kxjkiQCUGETw X-IronPort-AV: E=Sophos;i="4.90,888,1371074400"; d="scan'208";a="32514792" Received: from mail-la0-f43.google.com ([209.85.215.43]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 12 Sep 2013 05:26:05 +0200 Received: by mail-la0-f43.google.com with SMTP id ep20so8331117lab.30 for ; Wed, 11 Sep 2013 20:26:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=D1SPhrnMazdg0IUsXbmS8Mw8tkl/JLAQFdrNjNq6Idc=; b=g6HPYhlvD8PcTKh+YS836Ekqt41WVG4SgCt7uaMCpoX40X4f5aC+/u3y+KtJsgE8R+ 6h3M2sKl1qWe/lAmKTHvNOCrthh5csfjdIGu9Yq0QAZDMqabNieRKKyfAB98JsNoKdXt tXDbYm91YiUzM9k3r8H+tr+ZGJk8T0vyqmxJTvWS/l97yzeNqyG0ttuVYuPwF3NAQ4Nl hePaEw7nMWOx8Wz741Kv7ey7CN5Egxpoe1eI/rFjPvjpFA1hYdjVrID1i1OxixT/IoAy torgEjridLrq5L5Q79FeBr4er4/BvVh24tnEhH/GMDTUwyr0iprjSYpRiiY3w/M8Hoaa 4r9A== X-Gm-Message-State: ALoCoQk8bAU1hUWZEqD+oQdXGdYVIIGWPUef3cP/D0x3yEcHIqKMLE2r5+pQM7jP0ovN0B0E7Tr5 X-Received: by 10.152.8.115 with SMTP id q19mr4254772laa.16.1378956365621; Wed, 11 Sep 2013 20:26:05 -0700 (PDT) Received: from golf.niidar.ru.niidar.ru ([109.188.126.47]) by mx.google.com with ESMTPSA id rd5sm2695242lbb.16.1969.12.31.16.00.00 (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Wed, 11 Sep 2013 20:26:05 -0700 (PDT) From: Ivan Gotovchits To: Adrien Nader Cc: David MENTRE , Paolo Donadeo , OCaml mailing list References: <20130910230928.2d51cd39@atmarama.noip.me> <20130911052437.GA9514@notk.org> <20130911183629.GB3764@notk.org> Date: Thu, 12 Sep 2013 07:25:53 +0400 In-Reply-To: <20130911183629.GB3764@notk.org> (Adrien Nader's message of "Wed, 11 Sep 2013 20:36:29 +0200") Message-ID: <87r4cuu3em.fsf@golf.niidar.ru> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Caml-list] OCaml vs Ada and/or GUI options Adrien Nader writes: >> 4. The use of callbacks everywhere looks to me like writing >> spaghetti code. I still hope somebody will write an >> API/Framework/whatever were one writes declaratively how the GUI >> should react and interact with application code, and all the needed >> code is generated automatically. Adobe had such a tool at one point >> for its internal use (i.e. for its applications). I don't know if >> reactive approaches would help in that regard. > > I'm afraid you'll find the same issues everywhere. One way or another > it'll boil down to the same thing. Consider using lwt-glib integration. You can transform any callback to a function returning lwt. You even go futher and use Lwt_react to transform glib events to declarative events and signals of (Lwt)React. -- (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ ...."Have you mooed today?"...