Avant-propos

Voici un exemple de définition et d'appel de la fonction square() sur une liste d'éléments dans différents langages. map() aurait pu appeler directement la fonction square() puisqu'elle n'a qu'un seul argument, mais je démontre ici comment créer une fonction anonyme si possible qui appellera la fonction square().

Coffeescript

square = (x) -> x * x

list = [1,2,3]
list2 = list.map (x) -> square x
console.log list2

Fichier: callback.coffee

Test: ?

Haskell

square x = x * x

main = do
    let list = [1,2,3]
    let list2 = map (\x -> square x) list
    print list2

Fichier: callback.hs

Test: runhaskell callback.hs

Javascript

function square(x) { return x * x; }
var list = [1,2,3]
var list2 = list.map(function(x) {
  return square(x);
})
console.log(list2);

Fichier: callback.js

Test: nodejs callback.js

Perl

sub square {
    $_*$_
}

@list = (1,2,3);
@list2 = map { square $_ } @list;

print @list2;

Fichier: callback.pl

Test: perl callback.pl

PHP

<?php
// 5.4
function square($x) { return $x*$x; }
$list = [1,2,3];
$list2 = array_map(function($x) { return square($x); }, $list);
var_dump($list2);
<?php
// 5.3
function square($x) { return $x*$x; }
function runsquare($x) { return square($x); }
$list = array(1,2,3);
$list2 = array_map('runsquare', $list);
var_dump($list2);

Fichiers: callback.php.txt callback.php5.3.txt

Test: php callback.php.txt

Test: php callback.php5.3.txt

Ruby

def square(x)
  x * x
end
list = [1, 2, 3]
list2 = list.map { |x| square x }
print list2

Fichier: callback.rb

Test: ruby callback.rb