λ-wiki
::
lambda-calculus
+
| 1 |
help
|
pages
|
skin
|
login
|
code
www!k! v.20120610
! CE SITE NECESSITE JAVASCRIPT !
λ-wiki :: éditeur
{h4 lambda-calcul avec javascript} {p Sources : {a {@ href:http://dankogai.typepad.com/blog/2006/03/lambda_calculus.html;} lambda_calculus }, {a {@ href:http://matt.might.net/articles/implementation-of-recursive-fixed-point-y-combinator-in-javascript-for-memoization/;} memoization }, {a {@ href:http://pspace.org/articles/68-the-untyped-lambda-calculus;} pspace.org } ,...} {p Parce que °°(?:ECMA|Java)script°° supporte le concept de "fermeture", il est de fait prêt pour le "Lambda-calculus". Noter que cet exemple ne contient aucune balise < script >, et pourtant le bouton "Show Me!" fonctionne.} {p Don't you love dynamic languages ?} {div {@ id:lambda; white-space:pre; border:1px solid; padding:5px; font-size:0.8em;}//°° // le code est situé dans un div id="lambda" // 1) définition des fonctions élémentaires : function zero(f){ return function(x){ return x} } function succ(n){ return function(f){ return function(x){ return f(n(f)(x))} } } function add(m){ return function(n){ return function(f){ return function(x){ return m(f)(n(f)(x))} } } } function mul(m){ return function(n){ return function(f){ return m(n(f))} } } function pow(m){ return function(n){ return n(m)} } // 2) exemple d'appel : function calcul( a ) { var one = succ(zero); var two = succ(one); var four = add(two)(two); var eight = mul(two)(four); var sixteen = pow(two)(four); var numbers = [one, two, four, eight, sixteen]; var str = ''; // for (var i = 0; i < numbers.length; i++) for (var i = 0; i < a; i++) { var n = numbers[i]; str += numbers[i](function(n){return 1+n})(0); str += ' = '; str += numbers[i](function(n){return '(1+' + n + ')'})(0); str += '\n'; } return str; } // 3) mémorise la chaine résultat de calcul() dans le div id="result" $('result').innerHTML = calcul( $('A').value ); //°°} {h6 résultat :} {p Entrer une valeur entre 1 et 5 : {input {@ id:A; code:lambda; value:???; width:50px;}}} {pre {@ id:result;} ... }