<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>Programmation fonctionnelle en Javascript</title>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <link rel="stylesheet" href="FuncProg.css" type="text/css" charset="utf-8">
        <script type="text/javascript" charset="utf-8" src="DOMTools.js"></script>

<script type="text/javascript" charset="utf-8">
// fonctions d'ordre supérieur
function add(a){
    return function(b){return a+b}
};
add(3)(4)
</script>

<script type="text/javascript" charset="utf-8">
var bump=add(1);
bump(3)
</script>

<script type="text/javascript" charset="utf-8">
// extension d'un objet prédéfini
Array.prototype.fold = function (value,functor){
    var result=value;
    for (var i=0;i<this.length;i++)

        result = functor(result,this[i]);
    return result;
};
[1,2,3,4,5,6,7,8,9,10].fold(0,function(a,b){return a+b})
</script>

<script type="text/javascript" charset="utf-8">
[1,2,3,4,5,6,7].fold(1,function(a,b){return a*b})
</script>

<script type="text/javascript" charset="utf-8">
["pomme","orange","poire"].map(function(a){return a+"s"}).fold("Cerise",function(a,b){return a+", "+b})
</script>

        <script type="text/javascript" charset="utf-8">
            function creerExemples(){
                var scripts = document.getElementsByTagName("script");
                // afficher tous les scripts sauf le premier (dans le head) et le dernier (celui-ci)
                for (var i=1; i  scripts.length-1; i++) {
                    showScript(scripts.item(i),document.getElementById("main"));
                };        
            }
            window.addEventListener("load",creerExemples,false);
        </script>
    </head>
    <body>
        <h1>Exemples de programmation fonctionnelle</h1>
        <div id="main">
        </div>
    </body>
</html>