From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Christine Lemmer-Webber Newsgroups: gmane.lisp.guile.user Subject: Re: Ideas for making Guile easier to approach Date: Wed, 27 Sep 2023 15:29:43 -0400 Message-ID: <87wmwbtnw7.fsf@dustycloud.org> References: <87a6f1mtz3.fsf@nonconstructivism.com> <20220208194657.ed7afe59b80eeb9c7ce880f3@gmail.com> <87o83fdeqz.fsf@dustycloud.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30841"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.10.5; emacs 28.2 To: Chris Vine , guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Wed Sep 27 21:30:51 2023 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 1qlaFF-0007fL-EC for guile-user@m.gmane-mx.org; Wed, 27 Sep 2023 21:30:50 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qlaEq-0002Kx-Hv; Wed, 27 Sep 2023 15:30:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qlaEp-0002KJ-H5 for guile-user@gnu.org; Wed, 27 Sep 2023 15:30:23 -0400 Original-Received: from wout2-smtp.messagingengine.com ([64.147.123.25]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qlaEn-00067K-AU for guile-user@gnu.org; Wed, 27 Sep 2023 15:30:23 -0400 Original-Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 52A923200A5D; Wed, 27 Sep 2023 15:30:18 -0400 (EDT) Original-Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Wed, 27 Sep 2023 15:30:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dustycloud.org; h=cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm2; t=1695843017; x=1695929417; bh=Cz EjAUY+/U/TFrdLzDw93aVOSkTx2HUVmKp5LoARblY=; b=J4viKAiwZ+zHXDfOyO ROy8kwEMh0GnQn6G4mb8+uzl+Dik/f0jZiCmjIN30YNCX9RZHSDg+ZDNi1BbTIy6 TXkU7L14fYRp2iwPwNHe4Pbhli4banZJi/xPHGFBqljXACd0WFpGH/bQsXJC4vzl br+PB5z1/CSH3CUHd1sbVBQp8dYHjxE8J9s72VAT4OFHBBoHgHzQ30I8Th30Y4cs UVwwyeMsE8Igd9gO11Fa/8Ot1kIzYIB2tNWQZ+CqR11WaG7BxD7vZdcfmnrwpdo7 DNiODFNE4wN8ODMCh2pzRYyVrziRYBj0Xj5ZznztqMgnmMZOIe7eCzdLWeLD6jCf xnJQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; t=1695843017; x=1695929417; bh=CzEjAUY+/U/TF rdLzDw93aVOSkTx2HUVmKp5LoARblY=; b=cKbhdKymcLYk1a/SyOybqOuHm9aKO K2Acs0Ah08HiB3cf1gU4LPC8hg4hvtz9q7fcsZM1PY2CbGPCkJO2jLjsNLDqF49a eY3uCuypEBhkxGGvd3qPs+rv4HUc/OPKaSB+6sp8xARoRG088qNjUhxCV4gBrI43 BvRSrYDfwsLlk32w0g8Xa3B669ybs+IHwWW9e4/sppWVjgNVYTUbU9GPADImbJ6W s4LY0BVIXI+NztO1g6uj6xBWSGc87quxc8B1GTcukQ88o31mWRcR189WCniH5TeL LAezUmoFYym3HcLYEDamvmXd6lZJS2I/cLxW3Ls/scJNuDy66kFFb74MQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvjedrtdeggdejhecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpehffgfhvffuffgjkfggtgesthdtredttdertdenucfhrhhomhepvehhrhhishht ihhnvgcunfgvmhhmvghrqdghvggssggvrhcuoegtfigvsggsvghrseguuhhsthihtghloh huugdrohhrgheqnecuggftrfgrthhtvghrnhepleefheehheejieeftdelffevhefggeff ledutdfgledvffetkeettdefvedthfevnecuffhomhgrihhnpehstghhvghmvgdrtghomh enucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegtfigv sggsvghrseguuhhsthihtghlohhuugdrohhrgh X-ME-Proxy: Feedback-ID: i006446df:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 27 Sep 2023 15:30:17 -0400 (EDT) In-reply-to: <87o83fdeqz.fsf@dustycloud.org> Received-SPF: pass client-ip=64.147.123.25; envelope-from=cwebber@dustycloud.org; helo=wout2-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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-bounces+guile-user=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.user:19197 Archived-At: Here's another interesting thread to revisit on the topic of making Guile easier to use :) Christine Lemmer-Webber writes: > 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 incredibly >>> > easy, and their ecosystem is evidence for that success. Their package >>> > 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 fair >>> 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 project 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 the >>> SRFIs, how to plan a program so that I can know what to expect along the >>> way (what features I'll need to implement myself, etc) before I was able >>> to get productive in it beyond the realm of Guix. And I think most would >>> 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 weed >>> out the bad apples. And when this topic popped up on the guix list a few >>> 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 > ============================== > > 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 > ============ > > 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! > ====================================== > > 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 > ==== > > 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