Subject: [bug#61214] [PATCH guix-artwork] website: posts: Add Dissecting Guix, Part 2: The Store Monad.

From: "(" <[email-masked]>
Date: Sun, 12 Feb 2023 20:38:45 +0000

Heya,

On Sun Feb 12, 2023 at 6:05 PM GMT, Ludovic Courtès wrote:
> Like Chris, I’m wary of acronyms (they can easily make things
> impenetrable) so I’d write:
>
>   - the `with-store` macro and the `run-with-store` procedure
>   - the related monad interface

Wow, I really did use 'API' quite a lot... Oops :)

> I agree with Chris’s comment: a few sentences of a higher-level intro
> showing where this fits in the big picture would be great!

Okay, I'll try to figure something out for that.

> It would be nice to stress, also, that one doesn’t _need_ to know about
> monads to use the various programming interfaces of Guix; instead, it’s
> a thing for someone who’d like to get a deep dive into the internals of
> Guix.

Fair enough :)

> Maybe add something like “For example, one might write a function that
> divides two integers such that it returns special value `nothing` when
> the divisor is zero, and `maybe 5` when passed `15` and `3`.”  (I
> couldn’t think of a better example but you get the idea.  :-))

Okay.

> > +feature of strongly-typed functional languages, and you'll see it all over the
>
> s/strongly/statically/  :-)

Ahh, that's why everyone was pointing out the wording :)

> In Scheme we use #f, not '(), to denote “Nothing”.

Mhm, not sure why I added '() in retrospect.

> Maybe “First, let’s import that module:”?

Too much 'API'... :)

> “To define a monad in Guix, we use `define-monad`”
>
> (In general, I’d avoid “simply” because whether it’s “simple” depends on
> one’s background.)

Ah, of course.  I should've remembered this from last time :)

> s/these laws/the so-called _monad laws_/

Good idea.

> Should it be “⇒ #t” instead of “;; #t”, to follow the convention used in
> the manual and in other places?

That's much nicer, yeah.

> s/monad API/monad module/ (or “monad library”)

(insert thumbs up emoji here)

> > +   strong types or an interface-like system.
>
> “static types”?

Yep.

> s/This API/The `(guix monads)` module/

Okay.

> Maybe link to the “The Store Monad” section of the manual here or
> earlier?

Oh, did I not link to it before, in the "Lies, Damned Lies, and Abstractions"
section!?

* unmatched-paren checks

...oops.

> I feel we’re asking a lot of work from you, but hopefully the result
> will be even more pleasant.  I guess v4 will be ready to go!

Hopefully! :)

> Thanks for all the work,

And thanks for all your own work! :)

    -- (