Yes, that works generally.  An implementation is not permitted to implement
(values) by returning NIL because that would be detectable by
multiple-value-list for example.

The "primary value" is used in cases where a form has to yield a value, such
as in a let binding or as an argument to a function.  In those cases, nil is
used if there are zero values.

(when nil (values)) will always return one value, nil, because (values) is
never evaluated there.  Likewise, (when t (values)) will always return zero
values.

__Martin


>>>>> On Fri, 9 Jun 2023 08:35:29 -0500, Robert P Goldman said:
> 
> Does that generally work, or is an implementation permitted to implement 
> (values) by returning NIL?  
> 
> In the description of “primary value” in the hyper spec, I see the following: 
>  
> 
> primary value n. (of values resulting from the evaluation of a form) the 
> first value, if any, or else nil if there are no values. ``The primary value 
> returned by truncate is an integer quotient, truncated toward zero.''  
> 
> Does that license `(when nil (values))` to return NIL?
> 
> --  
> Robert P. Goldman  
> 
> On June 9, 2023 at 08:23:46, Martin Simmons 
> (mar...@lispworks.com(mailto:mar...@lispworks.com)) wrote:
> 
> > Another possible fix is to always return zero values, e.g.
> >  
> > #.(progn
> > (when (uiop:getenv "HOMEBREW_PREFIX")
> > (pushnew :homebrew *features*))
> > (values))
> >  
> > __Martin
> >  
> >  
> > > > > > > On Thu, 08 Jun 2023 16:32:36 -0500, Robert Goldman said:
> > >  
> > > This one was my fault. I did the PR with this patch, because cl-libuv 
> > > wouldn't build on my Mac. Since there's no testing, apparently, it 
> > > slipped through.
> > >  
> > > I don't know how to fix this, because I have never used CFFI-grovel, so 
> > > no idea how to put Madhu's advice into practice.
> > >  
> > > As an aside, doesn't this kind of break Faré's design principle that the 
> > > person who has the information is the one who should be configuring the 
> > > software? It seems like we are expecting the programmer to guess ahead of 
> > > time what are all of the possible locations for the foreign library and 
> > > includes. Wouldn't it make more sense for this to be configurable?
> > >  
> > > Of course, this is partly my fault, since ASDF does not support 
> > > configuring operations, except with gross dynamic variables.
> > >  
> > > On 8 Jun 2023, at 15:32, Attila Lendvai wrote:
> > >  
> > > > FTR, Madhu's analysis has been forwarded to the author:
> > > >  
> > > > https://github.com/orthecreedence/cl-libuv/issues/23
> > > >  
> > > > --
> > > > • attila lendvai
> > > > • PGP: 963F 5D5F 45C7 DFCD 0A39
> > > > --
> > > > “Nobody in the world, nobody in history, has ever gotten their freedom
> > > > by appealing to the moral sense of the people who were oppressing
> > > > them.”
> > > > — Assata Shakur (1947–)
> > >  
> > >  
> 

Reply via email to