Ilya Zakharevich on Thu, 5 Jun 2003 12:40:38 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: .gprc


On Thu, Jun 05, 2003 at 04:07:38PM +0200, Karim BELABAS wrote:
> > > > d) It is possible to get an array [2,4,5] for GP/PARI version 2.4.5
> > > >    from the GP/PARI API?  Then one could delegate version-dependent
> > > >    processing to the read() directives...
> >
> > > It would clutter the name space,
> >
> > As will any other functionality; what is your point here?
> 
> Nothing crucial. Simply that introducing new common keywords like version()
> breaks existing scripts [ C++ syndrom... it would break some of mine ], and
> safer complicated keywords like pariversion() or derivatives are rather
> unintuitive.

Do not think there is going to be anything more intuitive than
pari_version(). ;-)

> As a rule, I'd rather keep the built-in routine set to a minimum unless
> 
> * there's a definite use for the new functionality
> * it's inconvenient to replicate it from within gp.
> 
> Do you have a definite need for this version array which can't be addressed
> by the gprc (admittedly quite limited) version handling ?

You want me to insert something like this in gprc:

  if VERSION == 2.2.5 eval(version=[2,2,5])
  if VERSION == 2.2.6 eval(version=[2,2,6])
  if VERSION == 2.2.7 eval(version=[2,2,7])

or what?  I do not see how gprc stuff is going to help with choosing
an algo basing on the version...

> Btw, using default() would solve the keyword porblem, but I don't want to mix
> user preferences and read-only variables.

Moreover, it can't be used from PARI.

> While I'm at it, I've always
> thought that the optional flag
> 
>   default(d, val, 1)
> 
> was a ugly hack (I regret it dearly). Maybe something like
> 
>   default(d), default(d, val): as current [ set / print default value ]
>   defaultget(d)              : as current default(d,,1) [ return a GP object ]
> 
> would be less cryptic. The defaultget()  [ or interface(), or whatever ]
> routine could then be used to query for system variables in addition to
> defaults, in particular version, etc ?

Well, if (a limited version of this) is useful from PARI, I'm for it.
 
> >> vers() =
> >> {
> >>   eval( Str("[",
> >>           extern("gp --version-short 2>&1 |
> >>               sed -e 's/\\./,/g' -e 's/^/\"/' -e 's/$/\"/'"),  "]") )
> >> }
> >
> > ??? What use is it if it does not work everywhere?  E.g., command.com does
> > not support 2>&1; sed is not guarantied to be present etc.
> 
> I'm sure you're more than able to concoct a perl alternative which will work
> everywhere (provided perl is installed:-).

I woudn't be so sure.  VMS may be a problem - its "shell" is very different.

Hope this helps,
Ilya