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

Re^3: Functional Programming & method rewriting

by elusion (Curate)
on Oct 29, 2004 at 03:16 UTC ( #403584=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Functional Programming & method rewriting
in thread Functional Programming & method rewriting

Why type more than you need to?
This philosophy is one I don't agree with, especially when developing code you are going to have to go back and tweak later.
You're right. And I asked the wrong question; or at least an incomplete one. What I meant to ask was: why type more when you're not gaining anything? Your code is more complex, it's partially duplicated, and it's not very readable. I consider myself a strong Perl programmer (and I realize that assumption can be a dangerous one to start with :-), and I had to sit for a minute before I could figure out what it was that you'd done.
Every time I've done a quick shift in the middle of a block of code, I've had to go back and change it later. With @args, I might want to later replace that @args with ($gorp,$slug,@args) = shift() for instance. It leaves a place in the code to do that, and I only have to edit one line to make that change.
Are you sure you don't mean my (@args) = @_;? shift only ever returns one element, so using it in list context is pointless: ($gorp,$slug,@args) = shift() doesn't do anything to $slug or @args.

I don't mean to grill you. I just want to understand and give some (hopefully friendly) advice.

Update: my 200th node! :-)


Comment on Re^3: Functional Programming & method rewriting
Select or Download Code
Re^4: Functional Programming & method rewriting
by SpanishInquisition (Pilgrim) on Oct 29, 2004 at 12:50 UTC
    My fault. Ok, so replace ($gorp, $slug, @args) = shift() with ($gorp,$slug) = @_ and you get what I meant, ah well. Please shoot me for only testing with functions taking a single parameter :)

    This stupid mistake of mine was related to me thinking @_ would be accidentally closed around the first block, which isn't true, because @_ is magic... (I was always using @_ before, so, umh, that's why it's odd).

      No it's not because @_ is magic (whatever that means) it's because @_ is localized. And a package Variable anyway.
      Closures only grab lexicals (my variables). @_ is a package variable (local variable).

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (5)
As of 2015-07-05 17:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (67 votes), past polls