Subject: RE: bug#15108: 24.3.50; Package dependency documentation

From: Drew Adams <[email-masked]>
Date: Fri, 16 Aug 2013 00:46:42 -0700 (PDT)

> > You can use `Package Requires ((foo "0"))' as a workaround, but it's
> > silly that you have to do that.  If a library is not versioned, or if
> > for some reason any version of it will do for the package that requires
> > it, it should be possible to use just `Package Requires ((foo))'.
> 
> Would values of either `foo' for just a single package dependency, `(foo
> bar)' for packages without version dependencies and `(foo (baz "1.1.0")
> bar)' for mixed values be OK? That would be my preference, but perhaps
> this is to complex.

Are you asking to be able to use (foo (baz "1.1.0") bar) as an
alternative to ((foo) (baz "1.1.0") (bar))?

IOW, `foo' instead of `(foo)' or (foo "0")?  Sounds OK to me.  Maybe
someone else knows a reason why that would not work or be a good idea.

> > Furthermore, if no library is required, it should be possible to omit
> > a `Package-Requires' altogether - that should be equivalent to
> > `Package-Requires ()'.
> 
> This is already possible isn't it? Most of my packages don't require
> anything and as such don't have a `Package-Requires' header.

Dunno.  I ended up adding `Package-Requires' everywhere, because
it wasn't clear to me that its absence means `Package-Requires ()', in
practice.

That said, an explicit `Package-Requires ()' makes it clear that there
is no dependency, whereas if it is absent that could just mean that
no one looked at the question.

Nevertheless, optional is better, IMO.  Leave it up to the programmer
to decide whether to be crystal clear by adding an explicit empty spec.