Also, this works (append to end of Karl's example):

--------
($y2) = interpolate $x2, $x, $y;
--------

These two routines differ in the context they expect to return to, and
interpolate's behavior is a known Perl wart. Stever Haryanto gave a nice
discussion of this Perl wart:
http://blogs.perl.org/users/steven_haryanto/2012/09/the-comma-operator.html

To fix this, we should introduce yet another function with behavior that
made more sense in scalar vs list context. These routines, and their
confusing application of Perl's context, have been in the PDL codebase for
a long time. Presumably some folks have learned (probably the hard way) how
to work around these. I wouldn't want to pull the rug out from under them
now.

One word of warning about context-aware return values. I have written some
functions that do this, and I regularly find myself wanting the scalar
return value in list contexts like building a list of key/value pairs for a
hash. In that case, I must say "scalar(func(...))". I find myself doing
this more often than not, and wish I had never created the scalar/list
differentiation.

David

On Sat, Oct 15, 2016 at 5:53 PM, Chris Marshall <devel.chm...@gmail.com>
wrote:

> interpol() seems to be implemented in terms of
> interpolate() already.  Does seem a bit confusing.
> Maybe the two routines could be merged into a
> "smarter" interpolate()...
>
> --Chris
>
> On 10/15/2016 05:18, Karl Glazebrook wrote:
> > Seems to me we should fix this inconsistency in usage?
> >
> > - Karl
> >
> > use PDL;
> > $x = sequence(100);
> > $y = $x**2;
> > $x2 = sequence(10)*10;
> >
> > # This works
> >
> > $y2 = interpol $x2, $x, $y;
> > print $y2, "\n";
> >
> > # This does not work
> > $y2 = interpolate $x2, $x, $y;
> > print $y2, "\n";
> > # But this does
> > ($y2,$err) = interpolate $x2, $x, $y;
> > print $y2, "\n";
> >
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> pdl-devel mailing list
> pdl-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pdl-devel
>



-- 
 "Debugging is twice as hard as writing the code in the first place.
  Therefore, if you write the code as cleverly as possible, you are,
  by definition, not smart enough to debug it." -- Brian Kernighan
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
pdl-devel mailing list
pdl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pdl-devel

Reply via email to