Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: Joining Arrays?

by graff (Chancellor)
on Dec 21, 2008 at 03:52 UTC ( [id://731848]=note: print w/replies, xml ) Need Help??


in reply to Re: Joining Arrays?
in thread Joining Arrays?

There's something about nested maps that strikes me as unsavory. Sure, there's nothing syntactically wrong with it, but then there's nothing syntactically wrong with a sentence like "The cat the dog the man hit bit died."

In the case of nested maps, keeping track of what each $_ is holding involves an extra cognitive load. It's simply that it takes the reader a fair bit longer than normal to figure out the intent, and for that reason, I'd prefer to avoid it.

Replies are listed 'Best First'.
Re^3: Joining Arrays?
by kyle (Abbot) on Dec 21, 2008 at 04:45 UTC

    I agree with that. It would be nice if map (and grep) could take a variable like foreach does.

    # this doesn't work my @joined = map my $url { map my $code { $url . $code } @codes } @urls;

      I guess, but I actually find that version harder to read than the first version. For one thing, it has no indentation options that aren't kind of terrible.

      For the general, non-nested versions, it might be nicer.

      for(split(" ","tsuJ rehtonA lreP rekcaH")){print reverse . " "}print "\b.\n";

      If the map BLOCK is more complicated than [insert personal threshold here], or they are nested I just declare the variable myself.

      @joined = map { my $url = $_; map { my $code = $_; $url . $code; } @codes } @urls;
Re^3: Joining Arrays?
by gone2015 (Deacon) on Dec 21, 2008 at 13:17 UTC
    ...nothing syntactically wrong with a sentence like "The cat the dog the man hit bit died."

    Ah. Fluent reverse Polish. Or is it Yoda egg-nog on (too much) ?

    I've tried to parse this... putting the brackets back in I get: died(the cat bit (the dog hit the man)) -- I'm assuming: (a) that each 'the' is part of the name of each object/subject; (b) that 'died' is a unary (intransitive); and (c) that 'bit' and 'hit' are binary operations (transitive).

    So much for syntax... semantics-wise, assuming that the 'hit' and 'bit' operators return the object modified by the operation inflicted upon it by the subject...

    ...no wonder the man died. What on earth had he done to upset both the cat and the dog ? And what did the dog hit him with ?

    Of course, being reverse polish the operators may themselves be reverse -- so the cat gets it because the man hit the dog ? What kind of twisted world is this ?

Re^3: Joining Arrays?
by Lawliet (Curate) on Dec 21, 2008 at 06:48 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://731848]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (3)
As of 2024-04-25 19:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found