From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Vong Subject: Re: [PATCH] gnu: Add sendmail Date: Sat, 24 Sep 2016 16:22:09 +0800 Message-ID: <87h995ogge.fsf@gmail.com> References: <1474042893-9690-1-git-send-email-jmd@gnu.org> <87d1k3t9h3.fsf@gmail.com> <20160917085035.GA23691@jocasta.intra> <87d1k2c1d9.fsf@gmail.com> <20160917101107.GA24303@jocasta.intra> <87r38hc95n.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:51108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bniF5-0002wt-A0 for guix-devel@gnu.org; Sat, 24 Sep 2016 04:23:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bniF3-0000xI-DG for guix-devel@gnu.org; Sat, 24 Sep 2016 04:23:26 -0400 In-Reply-To: <87r38hc95n.fsf@gmail.com> (Alex Kost's message of "Sun, 18 Sep 2016 22:14:44 +0300") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Alex Kost Cc: guix-devel@gnu.org, John Darrington Alex Kost writes: > John Darrington (2016-09-17 12:11 +0200) wrote: > >> On Sat, Sep 17, 2016 at 05:38:26PM +0800, Alex Vong wrote: > [...] >> > > + "contrib/mmuegel" "devtools/bin/configure.sh") >> > > + (("/bin/sh") (which "bash"))) >> > > + >> > > + (substitute* "devtools/bin/Build" >> > > + (("SHELL=/bin/sh") (string-append "SHELL=" (which "bash")))) >> > > + #t)) >> > I think the `#t' is not neccessary here, since `substitute*' uses >> > `substitute', which will either return #t or throw an exception. >> > >> > WTF?? Didn't you complain earlier this week when I *didn't* put #t in >> > exactly this >> > scenario?? >> > >> Yes, I am a different Alex :) >> Also, it seems we are not being consistent here, sometimes we put `#t' >> after `substitute*', sometimes we don't. Anyone has an idea? >> >> I did raise some suggestions in my earlier posts. But again I don't >> have any strong >> opinion. > > I have a strong opinion: if a docstring of a procedure says what value > it returns, we can rely on it, otherwise we should not guess what value > will be returned. In case of 'substitute*' (and 'substitute'), the > returned value is not specified, so I think if a phase ends with > 'substitute*', we should (or even must) add #t after it. I see your point that one should not be relying on undocumented features, which I agree. But I also see an alternative: to make 'substitute*' either return true or throw an exception and document it. I think the heart of the problem is scheme is "untyped", so we rely on the documentation. What do you think?