From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id eMSfHnhO6WPvuQAAbAwnHQ (envelope-from ) for ; Sun, 12 Feb 2023 21:39:20 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id UHemHnhO6WOYZwAA9RJhRA (envelope-from ) for ; Sun, 12 Feb 2023 21:39:20 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id CB6302653E for ; Sun, 12 Feb 2023 21:39:19 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pRJ7p-0001qZ-0d; Sun, 12 Feb 2023 15:39:05 -0500 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 1pRJ7m-0001qI-Hu for guix-patches@gnu.org; Sun, 12 Feb 2023 15:39:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pRJ7l-0008Qz-OY for guix-patches@gnu.org; Sun, 12 Feb 2023 15:39:01 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pRJ7l-0004Jr-Kw for guix-patches@gnu.org; Sun, 12 Feb 2023 15:39:01 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#61214] [PATCH guix-artwork] website: posts: Add Dissecting Guix, Part 2: The Store Monad. Resent-From: "(" Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 12 Feb 2023 20:39:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61214 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 61214@debbugs.gnu.org Received: via spool by 61214-submit@debbugs.gnu.org id=B61214.167623433416589 (code B ref 61214); Sun, 12 Feb 2023 20:39:01 +0000 Received: (at 61214) by debbugs.gnu.org; 12 Feb 2023 20:38:54 +0000 Received: from localhost ([127.0.0.1]:46952 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRJ7e-0004JV-Bp for submit@debbugs.gnu.org; Sun, 12 Feb 2023 15:38:54 -0500 Received: from knopi.disroot.org ([178.21.23.139]:45874) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRJ7b-0004JL-RR for 61214@debbugs.gnu.org; Sun, 12 Feb 2023 15:38:52 -0500 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 5D645412C9; Sun, 12 Feb 2023 21:38:50 +0100 (CET) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cB2khLFbuez4; Sun, 12 Feb 2023 21:38:49 +0100 (CET) Content-Type: multipart/signed; boundary=59a84b46d5ac90f8d7eaf947d4b723e355bf88aa01ba826b613fc309f172; micalg=pgp-sha512; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1676234329; bh=3Dgx3EuKJyv6/hE8/cX/B/Wh+kD04EqmBx93N0j/6mM=; h=Date:Cc:Subject:From:To:References:In-Reply-To; b=Y75yYnOgk+DSrnQmjlgsYM6busuqMLw/rxaYdIq19Pw6Drl+yAJSfcapR2DbOmzsf zOeGWTVyzuKUWIHrpK3yukdhkR1TIjJT3q+F56dAoGjJHt7yD8wljm0qO3xp1O5C8G 4MyHfysqunaP2Mz/N20WeXxpOQQKMTYloOAlswrF6hx2z7KLrmBzkQtIcRVF9eNGz0 n2RVQFrSMo7o1Y3dUy2x6nZ6A1/lRtF7oBinLFauZFIdVFUx2qD/Yj85VjTYtuIux9 rTkgfkaUcP7sf53Gy1hNan+2sjHTpttHeCVQUfr+nPkuqFvzGmo2ZBo56VdS8P+2vK P6VXfTxWEoU9g== Date: Sun, 12 Feb 2023 20:38:45 +0000 Message-Id: References: <20230201172821.3072-1-paren@disroot.org> <20230203073624.2338-1-paren@disroot.org> <87h6vqlpxk.fsf_-_@gnu.org> In-Reply-To: <87h6vqlpxk.fsf_-_@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: "\(" X-ACL-Warn: , "\( via Guix-patches" From: "\( via Guix-patches" via Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Seal: i=1; s=key1; d=yhetil.org; t=1676234360; a=rsa-sha256; cv=none; b=qy7mBo7GDSA1rblioX0mAvWgjVsbebEgLCz8U677A+1EuFA+HoLrQ6yB9oY0QXj5Fwwykg 1CA20ceKcabtyqmdDAVp0MhvDm9CDgAwaT07H08KNpFJu+qgYr7C6QDYmof09QdqIIx9KJ heBOdrNX6BcxuSD0X1hojAQwtZ+vBvN6f1gT71rwCg+ldAZ2vJ/CtkMCosa/s23IZzkJ29 08NH3sxzM67l+2T/PdxPY+zyyI/oXQgOXIOv1NFldn28ouX87KBPVS3l3AW4lk/cexUrQG plJuAJQXw23+BGhNvisS2/LzDK38xvEEgQhzcCq4aJJ6hksZRc8OFA8CeooK9w== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=disroot.org header.s=mail header.b=Y75yYnOg; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gnu.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1676234360; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:content-type:content-type:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=1bDAgAcgcDn14241W2SZl7wmpc3oe1jiP73PeMfa6KU=; b=Kb0JQlntLhVLXaXHyO12gUrEajhIwWh+jXMtV8DX35XxO5N1MQVJ9aTLRK7YNxJPMfhIwo 9EbHM8VcPwmrRf3WEaimQ90HzfoMPb0g9jMhxjzWvp5KKJfmeTdxhb2c7kjBtDibMfrLFz 11PcAJiUCQu6HzD71iCoeIZH8Ro04rfPAOoT3YuiqEy1dzR02XDR9qFUw0W3tJHmZ1STGI H97MF+AKXaIvfkL6kZlrpMRFwze72mPhDyxQ7gCawLB/BOHDRFQQrmjJUvuqEMtcpAizEo T06vFgjCzxEYPbmI8QmgfB1LQw2pSqiKdujOVxRjeHXAqCpQ2J7rC07TAD3ZtQ== X-Migadu-Spam-Score: -3.22 X-Spam-Score: -3.22 X-Migadu-Queue-Id: CB6302653E X-Migadu-Scanner: scn1.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=disroot.org header.s=mail header.b=Y75yYnOg; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gnu.org X-TUID: RKy/+VH/aeTw --59a84b46d5ac90f8d7eaf947d4b723e355bf88aa01ba826b613fc309f172 Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Heya, On Sun Feb 12, 2023 at 6:05 PM GMT, Ludovic Court=C3=A8s wrote: > Like Chris, I=E2=80=99m wary of acronyms (they can easily make things > impenetrable) so I=E2=80=99d 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=E2=80=99s comment: a few sentences of a higher-level i= ntro > 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=E2=80=99t _need_ to know= about > monads to use the various programming interfaces of Guix; instead, it=E2= =80=99s > a thing for someone who=E2=80=99d like to get a deep dive into the intern= als of > Guix. Fair enough :) > Maybe add something like =E2=80=9CFor 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`.=E2=80=9D (I > couldn=E2=80=99t 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 =E2=80=9CNothing=E2=80=9D. Mhm, not sure why I added '() in retrospect. > Maybe =E2=80=9CFirst, let=E2=80=99s import that module:=E2=80=9D? Too much 'API'... :) > =E2=80=9CTo define a monad in Guix, we use `define-monad`=E2=80=9D > > (In general, I=E2=80=99d avoid =E2=80=9Csimply=E2=80=9D because whether i= t=E2=80=99s =E2=80=9Csimple=E2=80=9D depends on > one=E2=80=99s 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 =E2=80=9C=E2=87=92 #t=E2=80=9D instead of =E2=80=9C;; #t=E2= =80=9D, to follow the convention used in > the manual and in other places? That's much nicer, yeah. > s/monad API/monad module/ (or =E2=80=9Cmonad library=E2=80=9D) (insert thumbs up emoji here) > > + strong types or an interface-like system. > > =E2=80=9Cstatic types=E2=80=9D? Yep. > s/This API/The `(guix monads)` module/ Okay. > Maybe link to the =E2=80=9CThe Store Monad=E2=80=9D section of the manual= here or > earlier? Oh, did I not link to it before, in the "Lies, Damned Lies, and Abstraction= s" section!? * unmatched-paren checks ...oops. > I feel we=E2=80=99re asking a lot of work from you, but hopefully the res= ult > 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! :) -- ( --59a84b46d5ac90f8d7eaf947d4b723e355bf88aa01ba826b613fc309f172 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEE6Vh10NblKE5doNlW7ImHg/nqI20FAmPpTlYACgkQ7ImHg/nq I22C8Av9GT/keTBesJLk5OY/eP/WouZRamqWTXQgX4Dp0sylbwaFP0UnP2QRpz4o bk5GLfnFx/FFTib4NyCePVKLO4sivsgRTLlSw6PONxCjEawIY23ZFYt0b4+0uKvt gzxvDRehv6QRtWZVmzVTxdjcMCxVVd8pnUlpfwOG51JfyCmItmjPXcoGM4QcEOg4 gxhHUtMM7Pagnlil2lHkgWmLehk9DNuLbgXHydltIQXEOs5OSmJYHC7SjJDs6WsE Y4GQ7MXXzoD2/zr7/5eeTfxYjdU/AvmN6AMNzsxBJV7IyTDy2FeMNda+Ll1X7EYz ErQhNbeBtt+JB5dQfwZiLPxx+WBuVkScCH2eOlry7N31Sy+kXI+2wZ0gQKrIBajH PkrAruSFMAI/CLguNy09N/0HlbK4SWYKCYP1uNZ1pvu+uRXh+Y/Ib9VFNWDR5y2T jr4pWd8eIe0hhjFzX1Ogygciy4TbeBd271Nf6RUUM/zCZBbPcll+X621w5EUIxbV tAiESYSg =2Ard -----END PGP SIGNATURE----- --59a84b46d5ac90f8d7eaf947d4b723e355bf88aa01ba826b613fc309f172--