Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

When would you use functional programming?

by Ovid (Cardinal)
on Oct 16, 2002 at 18:50 UTC ( #205797=perlmeditation: print w/replies, xml ) Need Help??

Help for this page

Select Code to Download


  1. or download this
    my @list = qw/ 7 5 2 2 /;
    my $prod = shift @list;
    $prod *= $_ foreach @list;
    
  2. or download this
    # bad.  Alters @_
    sub head { shift }
    
    # good.  Preserves @_
    sub head { $_[0] }
    
  3. or download this
    i = j + 1
    j = 6
    
  4. or download this
    prodList lst =
        if (length lst)==1 then head lst
    else head lst*(prodList (tail lst))
    
  5. or download this
    sub head { $_[0] }
    sub tail { @_[1..$#_] }
    ...
        ? head @_ 
        : (head @_) * prod_list( tail @_ ) 
    }
    
  6. or download this
    sub factorial { prod_list( 1 .. $_[0] ) }
    
  7. or download this
    #!/usr/bin/perl -w
    use strict;
    ...
    sub factorial { prod_list 1 .. $_[0] }
    
    print factorial shift;
    
  8. or download this
    sub factorial { 
      my $result = 1;
      $result   *= $_ for 1 .. $_[0];
      $result
    }
    
  9. or download this
    @new_list =
      map  { $_->[0] }
      sort { $a->[1] <=> $b->[1] }
      map  { [ $_, expensive_func( $_ ) ] }
        @old_list;
    
  10. or download this
    # who says Perl has too much punctuation? :)
    sub prod_list { 1 == @_ ? $_[0] : $_[0] * prod_list( @_[1..$#_] ) }
    

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://205797]
Approved by ajt
Front-paged by broquaint
help
Chatterbox?
[LanX]: ]t
[LanX]: am I the only one who first thinks scifi when a post starts with "Solaris"?

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (11)
As of 2017-03-23 19:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should Pluto Get Its Planethood Back?



    Results (294 votes). Check out past polls.