From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Panicz Maciej Godek Newsgroups: gmane.lisp.guile.user Subject: Re: A couple of questions about goops method parameters Date: Fri, 5 Sep 2014 21:35:44 +0200 Message-ID: References: <1409905923.9245.5.camel@Renee-desktop.suse> <871trpridm.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: ger.gmane.org 1409945762 13997 80.91.229.3 (5 Sep 2014 19:36:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 5 Sep 2014 19:36:02 +0000 (UTC) Cc: Carlos Pita , "guile-user@gnu.org" To: David Thompson Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Fri Sep 05 21:35:57 2014 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XPzIb-0007WH-0r for guile-user@m.gmane.org; Fri, 05 Sep 2014 21:35:57 +0200 Original-Received: from localhost ([::1]:59916 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPzIa-0008DM-JM for guile-user@m.gmane.org; Fri, 05 Sep 2014 15:35:56 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPzIS-0008D1-KL for guile-user@gnu.org; Fri, 05 Sep 2014 15:35:49 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XPzIO-0001zO-QZ for guile-user@gnu.org; Fri, 05 Sep 2014 15:35:48 -0400 Original-Received: from mail-vc0-x232.google.com ([2607:f8b0:400c:c03::232]:51680) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPzIO-0001zK-Lk for guile-user@gnu.org; Fri, 05 Sep 2014 15:35:44 -0400 Original-Received: by mail-vc0-f178.google.com with SMTP id la4so12654863vcb.23 for ; Fri, 05 Sep 2014 12:35:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=y4+cZDkvO8cXzK/LoGMc3AxZdsC50Ac0Ijbxk935AEU=; b=H5/4939zOJkCZxFzCzpqWBk3++uNSSH+hl6RIrR8Ap4CL3mVmftTMRHAhh2zR1+zhn jBVojgxnPcbjIrj5xrDyN1eytKxVoCcg+GVHaUJYIkb59fREU/os/ij+RCFIZyn7PwF8 9IzioALeVfUUsIUExYYGYsSd/E+rX4Nl/Phan11MKsRN5pPWh/mghX0o66sdBdQVy61N SIgmWUJDSUu5sbG6lZRIJx+w8TZlr8Herqx2PqCw771t8aY/O8UJU2rsn4JCjOJN5LsQ qfkVuAEErdZXp6FUhFxA93/VsNdOUOlBT9zRY7CsOdUo+8Pbw0tNxvX/n4ohHFIYEhjl O0HQ== X-Received: by 10.52.103.8 with SMTP id fs8mr2224315vdb.77.1409945744148; Fri, 05 Sep 2014 12:35:44 -0700 (PDT) Original-Received: by 10.221.66.79 with HTTP; Fri, 5 Sep 2014 12:35:44 -0700 (PDT) In-Reply-To: <871trpridm.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400c:c03::232 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:11461 Archived-At: 2014-09-05 21:12 GMT+02:00 David Thompson : > Panicz Maciej Godek writes: >> >> So perhaps you could tell me how to design a GUI framework in FP and >> without OOP. To me it seems that GUI is the main domain the OOP was >> crafted for, but if you have some nice functional ideas, perhaps you >> could help me to redesign my framework. >> > > Are you familiar with functional reactive programming? > > http://elm-lang.org/learn/What-is-FRP.elm > > Using FRP, we can model with mutable state in a pure, functional way. > That is, the necessary mutation is hidden behind the runtime of the FRP > implementation. > > Just some food for thought. Sure, I've been reading a lot, but I didn't manage to get much of it. I mean, the toy examples are really nice, but it's hard for me to see the advantage of FRP over OOP in practical systems (e.g. windowed applications with buttons and so on). Although I see value in encapsulating state mutations, the notion of state seems inevitable in describing such applications (like the mere fact that a checkbox can be checked or not -- so it's a state which is a part of the description). BTW I recently ran into a problem with your signal propagation framework from (guile 2d). Namely, if a signal is itself a mutable object (like a vector or an array), then changing the value of that object doesn't propagate (because it happens only when you use slot-set!, and not (vector-set! (slot-ref ...)...)). I can't find any workaround for that.