in reply to Closures versus Currying

Just a couple of style issues: if you can't explain precisely why you are using ampersands in your subroutine calls then leave them off (see perlsub if you want to find out more).

Secondly, since at least perl 5.5.3 (or 5.005_03 if you like), Perl admits a different syntax for calling out coderefs that is considered cleaner. It follows the form $coderef->(). Rewriting your code, we get:

my $boss = curry( \&echo, "My", "boss:" ); my $friend = curry( \&echo, "Johnny:" ); print $boss->(qw( has pointy hair )), "\n"; # "My boss: has pointy hai +r print $friend->(qw( likes rock and roll )), "\n"; # etc.

By the way, the code doesn't parse correctly. perl can't determine what the fragment &$friend qw( likes rock and roll ), "\n" is meant to mean. A pair of parentheses are needed.

- another intruder with the mooring of the heat of the Perl

Replies are listed 'Best First'.
Re^2: Closures versus Currying
by FoxtrotUniform (Prior) on Sep 06, 2004 at 08:47 UTC
    (...) if you can't explain precisely why you are using ampersands in your subroutine calls then leave them off (...)

    Because ampersands make it clear to everyone that you know you're using a user-defined function rather than a builtin, and when used with parens don't do anything out of the ordinary (viz. (tye)Re: A question of style)?

    I use ampersands everywhere I call user functions. It fits in nicely with the Perlish idea of "every symbol that isn't part of the language has a glyph" --- actually, now that I type that, I'm not certain that it's true, but it's mostly true so I stand by my coding style. Anyways, as tye points out, ampersands and parens Is Your Friend.

    --
    F o x t r o t U n i f o r m
    Found a typo in this node? /msg me
    % man 3 strfry

      I consider ampersands to be a question of personal taste.

      I only use them when necessary so that my coding style can stay more uniform when I switch languages. YMMV on whether this is good reasoning.