Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
124 lines (91 sloc) 2.29 KB
 state
un état est une variable
 interne a une fonction
 persistant entre les appels
 exemples de state
monparser.pl : conserver une valeur
compteur.pl : creer un compteur
 First Class Functions
 Les blocks et fonctions sont des valeurs
 C'est *TRES* important
 functionnal programming, paradigme montant
 langages dynamiques ( perl, ruby, js, groovy, ... )
 langages compilés ( F#, haskell, ... )
 litterature abondante
 Higher Order Perl
 Exemples de blocks
map { $_ * 2 } 1..3;
# ( 2, 4, 6 )
grep { $_ ~~ /foo/ }
qw/ foo barfoo bang /;
# qw/ foo barfoo /
 Exemple de fonction
 référence s'écrit: \
 sigil de fonction: &
 faire référence a la fonction: \&
sub reality { 42 }
sub augmented_reality (&$) {
my ( $func, $val ) = @_;
$func->() + $val
}
say augmented_reality \&reality, 4;
# 46
 Metaprogramming made UZI
# add 42
# set 12
if ( $line ~~
/^ (?<method> add | multiply | divide | set )
\s+ (?<value> \d+ )
$
/x
) { $self->$+{method}( $+{value} ) }
else { die "can't parse $line" }
 fonction anonyme
 référence a une fonction ...
 ... sans symbole dans le namespace
sub true { 42 }; true();
my $true = sub { 42 }; $true->();
 callbacks
 utilisation la plus fréquente des fonctions anonymes
IRC::Bot->new
( qw/ server irc.freenode.net nick botanic channel #biblibre /
, on =>
{ connect => sub { say "hello world" }
, reading => sub { /ping/ and say "pong" }
, close => sub { say "goodbye" }
, ...
}
)->run
 Fibonacci
Fibonacci.png
# http://www.shaeqkhan.com/wp-content/uploads/2010/03/Fibonacci.png
 fibonacci.pl
 ne contient qu'un seul état ....
 ... *un* état ...
 comment comparer plusieurs séquences ?
 Closures
 Une fonction anonyme
 Qui capture un état au moment de sa création
start.pl
 Put it all together
 afficher les premiers elements de fibo
pour les seeds
[1,1] , [2,4], [2,16]
 fibonacci_closures.pl
 any question ?
 so go back to work!
 Lazyness ...