From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Catonano Newsgroups: gmane.lisp.guile.user Subject: Re: "Missing" libraries/concepts found in other languages/ecosystems? Date: Fri, 10 Jul 2020 13:20:53 +0200 Message-ID: References: <20200710112109.b2ffa630699452541835924b@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6441"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Guile User To: Chris Vine Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Fri Jul 10 13:21:18 2020 Return-path: Envelope-to: guile-user@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jtr5i-0001aP-6A for guile-user@m.gmane-mx.org; Fri, 10 Jul 2020 13:21:18 +0200 Original-Received: from localhost ([::1]:48632 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jtr5h-0004IH-5S for guile-user@m.gmane-mx.org; Fri, 10 Jul 2020 07:21:17 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44150) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jtr5X-0004I6-Uk for guile-user@gnu.org; Fri, 10 Jul 2020 07:21:08 -0400 Original-Received: from mail-io1-xd2d.google.com ([2607:f8b0:4864:20::d2d]:47063) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jtr5V-0002JB-Qd for guile-user@gnu.org; Fri, 10 Jul 2020 07:21:07 -0400 Original-Received: by mail-io1-xd2d.google.com with SMTP id a12so5583705ion.13 for ; Fri, 10 Jul 2020 04:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ZBqoMDrDTm92Iri5aDprfEyhUEqkJXGlARpN6zinDj0=; b=q+U+MwouLQ3cJAGO1RCKgWK/EJX53ncFHnAwxbdnK+hgFAb9ptD/W1VRfBQNzI8d6F 40zVzEbIDcASqYtBQDv4Moy8wdtaApzQvmNR4Zv/AtdrvfgE9q82auj30c86GcUh0Uh7 8zLp9IqgSScONcpN/vUOxPzLb7NBDvn0hBMhoOtBN5T5dyo+xoQ7KoCmDnBBwO/YNKaw zYjusJddl8BdWOvurr+n6rezhVDRNkkcQpeAj51zDLc6Ux8JJAx4Oj/JZfAH8eUEP6Qg JTTCWZ0onFleBo/dNknjf/adhpQNGfQBUyhMlH8f+6pyTOs461nOrM/9BpMIf2slzm2Y yvTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ZBqoMDrDTm92Iri5aDprfEyhUEqkJXGlARpN6zinDj0=; b=uGk72SWOsbWG8RlPb6jtxx8M+XJjOfttr6Y14v0zdgyhenNbeocbATFwQFO3u8GmOt QG1TKpr3zKUwFrdxFWARHZekxVWikKvKwzx4XFiONF421+eDJOvnLw/HF9JYcS2mhzpC dhNvZmbtOfhGPANWHnUXmeoSYCrPIGqFu8TY3H+zBSS1MpMPEPb+oAloeK7VvMU5/70v Du4ziWxMD6pqOID8CzJdJN4cZpeE/dLlf3VWSVSjfEfyV3coyNsiJSuRFUD41LGd0IPv I2CICsmgxTVefeYEj/Op6fSDFuV/yOok3lbKv+iy3TuQ7/+iZdzzjHfBdQ05GRIUuOdx LCxQ== X-Gm-Message-State: AOAM532XhkbK567pUdg6y8IwhDcluD8Y33wCqA0x7OyJaxNBKkyKJQ6Y I9ChjLN9FXyUyeqDTBBrHka9zPQ/T0AZmDJ4wg== X-Google-Smtp-Source: ABdhPJxeu1Y1y0wjuqFNiJ64gBYXw6a7O3RmrnxcDXslRzpohFgPNLp6EmVIip5C2HLAP1xWlF5yCbI/NUR15gHt2UU= X-Received: by 2002:a05:6602:2f0a:: with SMTP id q10mr45746628iow.134.1594380064588; Fri, 10 Jul 2020 04:21:04 -0700 (PDT) In-Reply-To: <20200710112109.b2ffa630699452541835924b@gmail.com> Received-SPF: pass client-ip=2607:f8b0:4864:20::d2d; envelope-from=catonano@gmail.com; helo=mail-io1-xd2d.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Content-Filtered-By: Mailman/MimeDel 2.1.23 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.io gmane.lisp.guile.user:16653 Archived-At: Il giorno ven 10 lug 2020 alle ore 12:21 Chris Vine ha scritto: > On Fri, 10 Jul 2020 10:49:37 +0200 > Catonano wrote: > > Il giorno mer 8 lug 2020 alle ore 20:22 Zelphir Kaltstahl < > > zelphirkaltstahl@gmail.com> ha scritto: > > > > > Hi Simen! > > > > > > On 7/8/20 6:00 PM, guile-user-request@gnu.org wrote: > > > > Hi, I'm new to scheme/lisp, so I'm trying to find out how to do > > > > things the "lisp > > > > way". On the other hand, I like things from other ecosystems too, > > > > and I'm having > > > > problems finding this for Guile. It might be because there's no > > > > need for it/I'm > > > > terrible at searching/nobody had the time yet, or something else. > > > > > > > > I've been trying to find implementations for https://reactivex.io > > > > without any > > > > luck. And I'm unable to find implementation of FP concepts as > > > > found in Haskell > > > > and other languages. Functor, Monad, lenses (and other helpers for > > > > working with > > > > immutable data). > > > > > > > > Does things like this exists, or is it better to use something > > > > else? > > > > > > > > Regards Simen > > > > > > To what others already have written I will add: > > > > > > From time to time one can copy ideas from Racket or look at what exists > > > in Racket for solving a problem or seeing what the approach is. > > > > > > Catonano identified already the lack of examples in the Guile guide. I > > > fight with that myself, so I created a repository with examples. > Perhaps > > > I should somehow add them to the guide. I've not looked into how to do > > > that. Probably some commit in a repo somewhere for the guide: > > > > > > https://notabug.org/ZelphirKaltstahl/guile-examples > > > > > > Hope this can help! > > > > > > > Thank you, yes that helps > > > > In fact, it's a precious resource ! > > > > I was especially delighted with the examples of using exceptions ! > > > > I had so missed examples of those ! > > > > As for the manual, very recently a mention of Guile Hall ended up being > > included in the manual > > > > The same could be done with your examples collection > > > > I also think that your collection could be mentioned by the Guile web > site, > > maybe in the "learn" section > > > > Here's the repo for the web site: > > https://git.savannah.gnu.org/cgit/guile/guile-web.git/ > > > > a regular patch could do > > > > What do people think of mentioning this resource on the Guile web site ? > > Whilst I don't have strong feelings, as a general approach I think it is > better to include additional examples (where needed) in the body of the > manual, which I think is generally well written. > As long as some examples are reachable from an officially sanctioned documentation source, I'm ok with that What I find problematic is the casualness in referring to bits scattered all around The web site was just an idea, the manual would be perfectly fine Also, at this level of detail what some find helpful others don't. You > were delighted above with the exceptions example, whereas (if I read > the right one) I thought that that was one of the weaker ones. It > concentrates on R6RS/R7RS exceptions and with-exception-handler rather > than with guile's much easier to use catch expression (for guile-2.2) > or (for guile-3.0) its beefed-up with-exception-handler and exception > objects. > Ah there has been a misunderstanding here I was convinced that the exceptions example was of the last layout for using exceptions reached recently in Guile 3.x If it's not, I agree it's less valuable But I think the author was just confused or led astray by the casualness of referring to scattered bits, I'm not blaming them I'd be grateful if anyone with enough understanding of the issue would contribute a proper example of how to use exceptions according to the last exceptions reorganization in Guile 3.x I would be happy to send a patch for the manual containing such example and a few words, as I did with the mention of Guile Hall with-exception-handler is a tricky beast and the example didn't deal > with the main case: most uses of exceptions involve handling them and > moving on with program execution from the point where the exception is > caught, and to do that using with-exception-handler instead of > guile's 'catch' form you have to have a call/ec helper (or with > guile-3.0 you can just set the #unwind argument to true). Instead you > are left with the idea that you use continuable exceptions for that > (which while they do stop the program exiting are something different) > or the R6RS/R7RS guard form. > I'm not following you on this because I don't know enough of both the Guile new idea of how to use exceptions and the R6/7RS one > I am not trying to be critical here - I think examples are useful to > convey points and some of them were fine. My point is more about venue. > No, that's ok, that's why I asked In fact, should we end up with a proper example in the manual, that would be a positive outcome I'd say more, here I'd go systematically through all the examples in that repo and do a similar assessment if we can add it to the manual as is or if it needs refinement I can't do this on my own because in many cases I don't know enough to come up with valid examples myself But I'd be happy to prepare patches for the manual, given the right directions