unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Christine Lemmer-Webber <cwebber@dustycloud.org>
To: Chris Vine <vine35792468@gmail.com>, guile-user@gnu.org
Subject: Re: Ideas for making Guile easier to approach
Date: Wed, 27 Sep 2023 15:29:43 -0400	[thread overview]
Message-ID: <87wmwbtnw7.fsf@dustycloud.org> (raw)
In-Reply-To: <87o83fdeqz.fsf@dustycloud.org>

Here's another interesting thread to revisit on the topic of making
Guile easier to use :)

Christine Lemmer-Webber <cwebber@dustycloud.org> 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 <vine35792468@gmail.com> writes:
>
>> On Tue, 08 Feb 2022 19:19:06 +0700
>> Blake Shaw <blake@nonconstructivism.com> wrote:
>>
>>> Vijay Marupudi <vijaymarupudi@gatech.edu> 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




  parent reply	other threads:[~2023-09-27 19:29 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-08 12:19 Newbie thoughts on Guile Hall + Guix Blake Shaw
2022-02-08 19:46 ` Chris Vine
2022-02-09 15:18   ` Ideas for making Guile easier to approach Christine Lemmer-Webber
2022-02-09 20:33     ` Daniel Tornabene
2022-02-09 21:05     ` Maxime Devos
2022-02-09 23:06       ` Keith Wright
2022-02-09 21:05     ` Olivier Dion via General Guile related discussions
2022-02-09 21:07     ` Maxime Devos
2023-10-05 14:15       ` Dr. Arne Babenhauserheide
2022-02-09 23:01     ` Chris Vine
2022-02-10  0:56     ` Timothy Sample
2022-02-10 10:01       ` Ricardo Wurmus
2022-02-10  1:32     ` Blake Shaw
2022-02-10  2:02     ` paul
2022-02-10 11:27     ` Mikael Djurfeldt
2022-02-10 14:34       ` Leo Butler
2022-02-10 15:58         ` Mikael Djurfeldt
2022-02-10 18:25         ` Olivier Dion via General Guile related discussions
2023-09-27 19:29     ` Christine Lemmer-Webber [this message]
2023-09-28 12:30       ` Maxime Devos
2022-02-09  6:28 ` Newbie thoughts on Guile Hall + Guix Catonano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wmwbtnw7.fsf@dustycloud.org \
    --to=cwebber@dustycloud.org \
    --cc=guile-user@gnu.org \
    --cc=vine35792468@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).