Re: [Pdl-devel] interpol vs interpolate

2016-10-17 Thread Karl Glazebrook
Right now, interpol() is a perl wrapper calls the pp routine interpolate() and 
barfs if it returns an error status. (both at the pp level)

One could change interpolate() to do different things in a wantarray/scalar 
context...
   - but I do not think that is possible at the pp-level? It seems inefficient 
to add another layer of perl wrapping..

I only bring this up as interpol() was giving an annoying print, so I changed 
it to interpolate() and got unexpected results

- perhaps the solution is simply to patch the documentation? (I remember this 
‘feature’ from some code ten years ago and clearly forgot about it again…)

K

> On 17 Oct 2016, at 5:28 AM, Joel Berger  wrote:
> 
> We have explicitly removed all wantarray behavior from Mojolicious. In a web 
> context it basically will always be a security vulnerability waiting for an 
> unsuspecting application author. In PDL it is more likely to be a bug in 
> waiting than a vuln but you never know. 
> 
> On Sun, Oct 16, 2016 at 8:20 AM David Mertens  
> wrote:
> 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  
> 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
> --
> 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


--
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


Re: [Pdl-devel] interpol vs interpolate

2016-10-16 Thread Joel Berger
We have explicitly removed all wantarray behavior from Mojolicious. In a
web context it basically will always be a security vulnerability waiting
for an unsuspecting application author. In PDL it is more likely to be a
bug in waiting than a vuln but you never know.

On Sun, Oct 16, 2016 at 8:20 AM David Mertens 
wrote:

> 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 
> 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
>
--
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


Re: [Pdl-devel] interpol vs interpolate

2016-10-16 Thread David Mertens
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 
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


Re: [Pdl-devel] interpol vs interpolate

2016-10-15 Thread Chris Marshall
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


[Pdl-devel] interpol vs interpolate

2016-10-15 Thread Karl Glazebrook
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