http://qs321.pair.com?node_id=1138057


in reply to Re: Ternary vs. Sort vs. Max
in thread Ternary vs. Sort vs. Max

Hi Athanasius,

The macro is indeed interesting, as I've not delved in there before.

However, that may suffer from techical debt. If I define a max macro that only handles 2 values, I (or my replacement) may call it later and give it 3 values, and only get the max of the first 2. Still, some careful coding (probably duplicating List::Util's max) could ensue.

Edited to add:

Also, it seems the macro syntax uses significant whitespace, which bugs me.

Edited to add (2):

The macro doc page has this:

use macro add => sub{ $_[0] + $_[1] }; say => sub{ print @_, "\n"}; say(add(1, 3)); # it's replaced into 'print do{ (1) + (3) }, "\n";'
which I'm assuming uses significant whitespace to figure out that say is a macro. (Or there's a typo semicolon on the first line.)

-QM
--
Quantum Mechanics: The dreams stuff is made of

Replies are listed 'Best First'.
Re^3: Ternary vs. Sort vs. Max
by Athanasius (Archbishop) on Aug 11, 2015 at 09:42 UTC

    It’s just a typo:

    19:13 >perl pod.pl Useless use of a constant ("say") in void context at pod.pl line 6. Useless use of single ref constructor in void context at pod.pl line 6 +. Undefined subroutine &main::say called at pod.pl line 7. 19:39 >

    Whereas with a comma instead of the semicolon:

    19:39 >perl pod.pl 4 19:41 >perl -MO=Deparse pod.pl Compiling pod.pl by macro::compiler/0.06 ... sub Digest::base::clone; sub Digest::base::new; sub Digest::base::digest; sub Digest::base::add; use macro ('add', sub { use warnings; use strict; $_[0] + $_[1]; } , 'say', sub { use warnings; use strict; print @_, "\n"; } ); use warnings; use strict; print 4, "\n"; pod.pl syntax OK 19:41 >

    Hope that helps,

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

      I raised ticket 106366 for that.

      -QM
      --
      Quantum Mechanics: The dreams stuff is made of