• [^] # Re: Elm

    Posté par . En réponse au lien Un langage de plus : Roc. Évalué à 2.

    Pour compléter la réponse de Andréas,

    Si je prends le hello world de Elm

    module Main exposing (..)
    import Html exposing (text)
    main =
     text "hello world"

    Le compilateur génère - après optimisation - un fichier JS de 17ko qui embarque le runtime et le code applicatif transformé en JS.

    [3590 lines omitted]
    var $elm$json$Json$Decode$map = _Json_map1;
    var $elm$json$Json$Decode$map2 = _Json_map2;
    var $elm$json$Json$Decode$succeed = _Json_succeed;
    var $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {
     switch (handler.$) {
     case 0:
     return 0;
     case 1:
     return 1;
     case 2:
     return 2;
     default:
     return 3;
     }
    };
    var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;
    var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;
    var $author$project$Main$main = $elm$html$Html$text('hello world');

    Et cela s'intègre dans une page HTML comme ceci :

    <!DOCTYPE HTML>
    <html>
    <head>
     <meta charset="UTF-8">
     <title>Main</title>
     <style>body { padding: 0; margin: 0; }</style>
     <script src="elm.js"></script>
    </head>
    <body>
    <div id="elm"></div>
    <script>Elm.Main.init({ node: document.getElementById("elm") });</script>
    </body>
    </html>