From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Blake Shaw Newsgroups: gmane.lisp.guile.user Subject: Re: Ideas for making Guile easier to approach Date: Thu, 10 Feb 2022 08:32:30 +0700 Message-ID: References: <87a6f1mtz3.fsf@nonconstructivism.com> <20220208194657.ed7afe59b80eeb9c7ce880f3@gmail.com> <87o83fdeqz.fsf@dustycloud.org> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="7934"; mail-complaints-to="usenet@ciao.gmane.io" Cc: guile-user@gnu.org To: Christine Lemmer-Webber Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Thu Feb 10 02:33:12 2022 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 1nHyKe-0001qp-3H for guile-user@m.gmane-mx.org; Thu, 10 Feb 2022 02:33:12 +0100 Original-Received: from localhost ([::1]:42864 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nHyKc-0005ih-KZ for guile-user@m.gmane-mx.org; Wed, 09 Feb 2022 20:33:10 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:56304) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nHyKK-0005iL-Sb for guile-user@gnu.org; Wed, 09 Feb 2022 20:32:53 -0500 Original-Received: from [2607:f8b0:4864:20::1034] (port=36494 helo=mail-pj1-x1034.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nHyKH-000115-Dk for guile-user@gnu.org; Wed, 09 Feb 2022 20:32:52 -0500 Original-Received: by mail-pj1-x1034.google.com with SMTP id c5-20020a17090a1d0500b001b904a7046dso5436071pjd.1 for ; Wed, 09 Feb 2022 17:32:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sweatshoppe-org.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=wtLFH/MwFPIXPVinntrDmBm3dqfZHewvt/dUJFh2iI8=; b=H1+iKizL+7Jta+eKSXoqXyW55ny71bh/dnDFKplE7ZvVS2dHiuImPfiOgc8yXWzK4t 1l5UxzUmEaWL6F66qfQRMe9ZdDkT3fX/VeTsV+lwvXxntaT4ve05kqH/2Qk/pbUykY1E UnZ1SCAq2jGntgMLJXe1qLnWwLyZGdxyLTZAQRJt3iZeQB7gJb4jS/Hd5p1kIZnJtsLF cTOUx8Mp95LFJ4E/S0kF4yHYoLKNEooceGEwFpR7WpNPz56ZqynD79N8SbGdk01OzmL4 eo5PyeIq7A7bec2an+sQj5L8ePCxO5WPuFuBmfkDybS3TiqrzJgbgnlMC/eT9qGb5HA2 F0DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=wtLFH/MwFPIXPVinntrDmBm3dqfZHewvt/dUJFh2iI8=; b=2X+tuMJy4iH9bpNCseEn+p5aeap2z6UbZ2FUbQLj8jEaXb6WOWbnGlPwcElIp8YZSd QgCeGDFF7k5Bkloubs9YKXkO6rEpcBNDHEKMG/RiTnl3nsw5HE02ybfcmUHgktv18BZx aqVZ1AXcqFhmxCJxBI9h6pT80FVseoJ+3hqCd4fAgCMLBPXwSZPqZW2a/P3KFPpe/iEQ eqPqnoTSApHxWhFT7w0CFkzftlqf/kniebQnMNhvcuU5VBX5G1XwXMMi6ChR6tdIuAs6 oaVAZZDP8XJSwtpEfZZtIcAOxAF9BCjsm6+EHvdKCIg2vAixwDRcxj8fsZwSjTNovnHP RYSQ== X-Gm-Message-State: AOAM532y6WUtSHimE54UQbHba2tyRL8rfDHqMQ+aSbv0OUraROI5Q9vL U1cH+eDwce1HiRn3NEECx4d09ziKpwqKF+aH2iTvfw== X-Google-Smtp-Source: ABdhPJzaACksk+fKBymOcNs9Ku+R+MJURGkPs9WxG87/xO9lNJI0mEVdd5vmPOHsYseIfJUfo7pTUL5axbs4Lqy67tY= X-Received: by 2002:a17:90a:e616:: with SMTP id j22mr176953pjy.45.1644456761867; Wed, 09 Feb 2022 17:32:41 -0800 (PST) In-Reply-To: <87o83fdeqz.fsf@dustycloud.org> X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1034 (failed) Received-SPF: none client-ip=2607:f8b0:4864:20::1034; envelope-from=blake@sweatshoppe.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.29 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:18060 Archived-At: Just a reminder I'm doing a presentation that covers all this (almost verbatim!) and more for Guix Days :) (ie Christine you be stealing my thunder! =F0=9F=98=86 =F0=9F=A4=A3 =F0=9F= =98=82) I'm kidding (kinda). it doesn't hurt to have the conversations already rolling and im sure it will mean the session will be extra productive :) So continue forth and steal! On Thu, Feb 10, 2022, 03:12 Christine Lemmer-Webber wrote: > I've been appreciating the feedback in this thread about Guile; I'm > starting a new topic name because I think we've deviated from talking > about Guile Hall and more about Guile. > > Some stuff below. > > Chris Vine writes: > > > On Tue, 08 Feb 2022 19:19:06 +0700 > > Blake Shaw wrote: > > > >> Vijay Marupudi writes: > >> > I don't think it's fair to say that using packages in Guile just as > >> > easy/hard as other languages. Python / Javascript make this incredib= ly > >> > easy, and their ecosystem is evidence for that success. Their packag= e > >> > managers have flaws, but they have benefits too, and those benefits > >> > would be great for Guile. > >> > >> I would just like to tag onto this convo that I agree that its not fai= r > >> to say that Guile is easy and will quickly bless those who endeavor to > >> learn it with superpowers. My experience w/Racket was very smooth and = I > >> got working in it very quickly. I was a contracted to work on a projec= t > in > >> Python a few months ago and without ever studying it I was able to > >> start doing production work in it (ridiculous how intuitive it is, > >> really). Before I started learning Guile I read Edwin Brady's book on > >> Idris and found Idris much easier to get from start to end of small > >> projects I was working on (because there is a well written book on it)= . > >> > >> While Guile has become my favorite programming language, it took me > >> several months to learn how to navigate & figure out how to navigate t= he > >> SRFIs, how to plan a program so that I can know what to expect along t= he > >> way (what features I'll need to implement myself, etc) before I was ab= le > >> to get productive in it beyond the realm of Guix. And I think most wou= ld > >> agree that Scheme is a less advanced language than Idris (I did some > >> category theory in school so I have some intuition for the ideas, but > >> still). And to be honest, I still hit plenty of road blocks. > >> > >> There were definitely some times where I was digging around trying to > >> figure out how to do things and came across messages in the archives > >> saying "its so easy you just do [vague hand wavy explanation]". And I > >> found that quite frustrating, like there is an insularity meant to wee= d > >> out the bad apples. And when this topic popped up on the guix list a f= ew > >> weeks ago some others expressed similar concerns, folks who are doing > >> very impressive work. A programming language should never make > >> programmers feel dumb -- it should make us feel empowered! > > > > Everything is capable of improvement but the guile manual is a manual > > and not I think primarily intended as a language tutorial (although > > Chapter 3 of the manual does have a very cursory introduction to the > > scheme language). If you are looking for a tutorial, I suggest reading > > https://www.scheme.com/tspl4/ . It covers the R6RS flavour, but at the > > tutorial level I don't think the various current standard flavours > > (R5RS, R6RS and R7RS) matter too much. > > > > I would be reluctant to see the manual turned into a tutorial if that > > were to mean abridging any of its current completeness. > > The manual does contain a very brief tutorial, but it's brief... the > Guix cookbook also contains something short. Both seem a bit lacking to > me but they could be starting points. > > Regarding the manual as a manual, I actually personally like the Guile > manual a lot. I think it's very well written. But it's a reference > guide. > > But I do remember finding it overwhelming and confusing initially. I > think a few things could improve the situation, some manual related, > some other things: > > > Guile Reference vs Guile Guide > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D > > Personally I think the *best* experience I have ever had in reading > manuals is in Racket. > > Racket has a nice way of handling things: > > - There's a set of initial "short tutorials" that are really to get you > up and running and feel like you "did something cool" fast. This is > great, and it would be nice to have some of these, maybe with > screencast examples. > > - Racket also separates the "Guide" from the "Reference". Well that's > sensible! Guile actually has a very good "reference manual", maybe > what it needs is a *companion* in terms of the "Guile Guide". > > (Note that despite my high praise for Racket's manuals, that's not a > universal impression; I have a friend who has told me several times that > Racket's manuals were hard for her because they seem too aimed at PLT > type folks. I still think highly of them but want to note that.) > > > Module names > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > ice-9 -> guile > -------------- > > I think that ice-9 is a weird namespace for "guile's standard library" > but it's what we have for historical reasons. Still I would have > preferred that namespace simply be "guile", so we have (guile match) and > (guile format) instead of (ice-9 ...). It would be clearer what ice-9 > *is* to have it be called "guile" instead. But maybe it's too late for > that. How much work would it be to do an alias like this? > > > Named SRFIs > ----------- > > If it's possible to do such aliases, I'd also say that making sense of > what SRFI module is what is a real mess for me. (srfi srfi-9) doesn't > tell me what that SRFI *is*. However, if we supported "named" versions > of SRFIs, that would help me. Which of these would be easier to read? > > Heck, maybe I should make a SRFI for common human readable SRFI names. > #mildlyspicytake #maybenotabadidea > > > An example, a comparison > ------------------------ > > Taken all together, imagine if instead of: > > (define-module (my-module) > #:use-module (ice-9 match) > #:use-module (ice-9 format) > #:use-module (srfi srfi-1) > #:use-module (srfi srfi-9) > #:use-module (srfi srfi-37) > #:use-module (srfi srfi-41) > #:use-module (srfi srfi-64)) > > We had: > > (define-module (my-module) > #:use-module (guile match) > #:use-module (guile format) > #:use-module (srfi list-utils) > #:use-module (srfi records) > #:use-module (srfi args-fold) > #:use-module (srfi streams) > #:use-module (srfi tests)) > > Much easier to follow, no? > > > Guile Studio and the picture language! > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > I've finally, finally tried out Ricardo Wurmus' Guile Studio, which is > actually quite impressive. It sets up Emacs to be like DrRacket, easy > to pick up and hack for a complete newcomer. Very nice! If we do have > screencasty type things it might be nice to use Guile Studio as the > environment we start showing people in. > > > Wisp > =3D=3D=3D=3D > > I'd like to actually see Guile integrate Wisp as a core language and > think about what it would be like to support it as a recommended > alternate way of writing programs. I think with the new block-level > highlighting that Arne has written, Wisp could be near ready for prime > time. This could mean: > > - Getting wisp actually in Guile's official languages > - Figuring out how to get geiser to be nicely integrated > - Figuring out how to make importing Wisp modules be as easy as > importing parenthetical-lisp ones > > > Anyway, those are my thoughts. This email was longer than I meant or > expected. Maybe it's useful. Thoughts? > > - Christine > >