From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40478) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQrO8-0003cB-FE for guix-patches@gnu.org; Mon, 18 Dec 2017 04:07:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eQrO2-0004JL-R2 for guix-patches@gnu.org; Mon, 18 Dec 2017 04:07:08 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:59174) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eQrO2-0004Io-NC for guix-patches@gnu.org; Mon, 18 Dec 2017 04:07:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eQrO2-000864-Ac for guix-patches@gnu.org; Mon, 18 Dec 2017 04:07:02 -0500 Subject: [bug#29745] [PATCH 0/3] Disallow phase returning . Resent-Message-ID: From: Arun Isaac In-Reply-To: <87zi6gxy6a.fsf@gnu.org> References: <20171216231242.12032-1-arunisaac@systemreboot.net> <87efnt9tvw.fsf@gnu.org> <87zi6gxy6a.fsf@gnu.org> Date: Mon, 18 Dec 2017 14:36:08 +0530 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: Ricardo Wurmus , 29745@debbugs.gnu.org > For instance we could change the return value of =E2=80=98substitute*=E2= =80=99 to be > #t on success; similarly for =E2=80=98install-file=E2=80=99. Yes, changing the return value of these functions is a good idea, regardless of what we decide here in this thread. But, there will always be phases that do not end with a call to these functions, and we won't be able to cover those cases. So, this is not a complete solution to the problem being discussed in this thread. >> Wouldn't it be simpler and more logical to accept unspecified values >> as "true" in line with Scheme's notion of "true"? Also, during patch review, the reviewer has to go to the extra trouble of manually checking if all phases return #t. If either the build system strictly checks for #t, or if #t were not strictly required (meaning # was tolerated), we would save ourselves some tedious manual work. > That=E2=80=99s a good question. My take on it is that it=E2=80=99s clear= er: the return > value of =E2=80=98substitute*=E2=80=99 for instance is unspecified, it=E2= =80=99s not necessarily > *the* unspecified value. My take is that we have two options: - disallow # and strictly check for #t in the build system even though this creates a new notion of "true" - allow # as "true" in line with the rest of Scheme, and stop appending #t at the end of phases I have no particular preference about which option we should choose. But, we do have to choose one of these options completely. Partial solutions might only add to the existing troubles.