On May 26, 2011, at 7:17 AM, Craig DeForest wrote:
> Hi, Zeno!
>
> The loss of anonymous method style function calling is a known wart with
> NiceSlice, unfortunately. It is a language design issue -- Perl leaves very
> few of the "convenient" constructions unused. Since (as you noticed) the
> &$ref(@params) syntax is preserved, it has not been a major issue.
>
> Source filters are indeed dangerous, but they remain the only way to affect
> the syntax of the language itself until Perl 6 becomes commonplace.
> NiceSlice has been rather thoroughly tested, and I use it in essentially all
> my PDL code. (Now that I think of it, the C preprocessor is a source filter
> too...) There are three warts to the source preprocessing that I know of:
> * Function refs: <<$ref->(@params);>> is overloaded with niceslicing
> syntax; use "&$ref(@params)" [which you pointed out]
> * String interpolation: <<print "$a (comment)";>> gets erroneously
> turned into <<print "$a->nslice(comment)", so you have to break up the quoted
> string. This has to do with the difficulty of parsing out the Perl quoting
> structure, which can potentially be fixed -- but nobody has yet felt moved to
> do so.
> * Inline functions: if you use Inline::C or Inline::PP, you must say
> "no PDL::NiceSlice" before the Inline call, else your foreign-language code
> will get mangled.
additionally, IIRC, NiceSlice was breaking up my DBI statements. I personally
found NiceSlice to be just as difficult (or easy, depending on one's
perspective) as the regular slice syntax, and stopped using NiceSlice in my
little PDL world.
>
>
>
> On May 26, 2011, at 4:21 AM, Zeno Gantner wrote:
>
>> Hi all,
>>
>> I am still new to PDL, and trying to get more comfortable with it.
>> So please excuse if my question is somehow naive ...
>>
>> I found out that PDL::NiceSlice breaks calling function references.
>> Is this a known bug?
>>
>> --
>> #!/usr/bin/perl
>>
>> use 5.10.1;
>>
>> use PDL::NiceSlice;
>> my $fun_ref = sub { say $_[0]; };
>> &$fun_ref('Hey!'); # works
>> $fun_ref->('Hey!'); # does not work
>> --
>> ... gives the output:
>> --
>> Hey!
>> Can't call method "nslice" on unblessed reference at ./pdl-niceslice.pl line
>> 8.
>> --
>>
>> By the way, PDL::NiceSlice is implemented as a Perl source filter,
>> what can be a bit dangerous.
>> What are the general recommendations towards PDL::NiceSlice? Is its
>> usage encouraged?
>>
>> Best regards,
>> Zeno
>> --
>> MyMediaLite Recommender System Library: http://ismll.de/mymedialite
>>
>> _______________________________________________
>> Perldl mailing list
>> [email protected]
>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>>
>
>
> _______________________________________________
> Perldl mailing list
> [email protected]
> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl