<commit_before>// Module for the guide pages
tryhaskell.pages = {};

// Unshow a string
tryhaskell.pages.unString = function(str){
    return str.replace(/^"(.*)"$/,"$1").replace(/\\"/,'"');
}

// Random message from a list of messages
tryhaskell.pages.rmsg = function(choices) {
    return choices[Math.floor((Math.random()*100) % choices.length)];
}

// Simple HTML encoding
tryhaskell.pages.htmlEncode = function(text,shy){
    var x = $('<div></div>');
    x.text(text);
    return x.html();
}

// The nemesis
tryhaskell.nemesis = "chirs";

// All pages
tryhaskell.pages.list =
    [
        {title:'Got five minutes?',
         guide:
         '<div class="indent">' +
         '<h3>Got 5 minutes?</h3>' +
         '<p>Type <code title="Click me to insert &quot;help&quot; into the console." style="cursor: pointer;">help</code> to start the ' +
         'tutorial.</p>' +
         '<p>Or try typing these out and see what happens ' +
         '<small class="note">(click to insert)</small>:</p>' +
         '<p>' +
         '<code title="Click me to insert &quot;23 * 36&quot; into the console." style="cursor: pointer;">23 * 36</code> or <code title="Click me to insert &quot;reverse ' +
         '&quot;hello&quot;&quot; into the console." style="cursor: pointer;">reverse ' +
         '"hello"</code> or <code title="Click me to insert &quot;foldr (:) [] [1,2,3]&quot; into the console." style="cursor: pointer;">foldr (:) [] [1,2,3]</code>' +
         '</p>' +
         '<p><strong>Other cool learning places</strong></pa>' +
         '<p class="clearfix">' +
         'You can also run real Haskell code—file I/O, ' +
         'web apps, and lots more in <a href="https://www.fpcomplete.com/page/project-build">an online IDE</a>. See also the <a href="https://www.fpcomplete.com/school">school of Haskell</a> for practical tutorials.' +
         '</p>' +
         '</div>' +
         '</div>'
        },
        ////////////////////////////////////////////////////////////////////////
        // Lesson 1

        // Simple addition
        {lesson:1,<commit_msg>Add note about supported IO actions<commit_after>// Module for the guide pages
tryhaskell.pages = {};

// Unshow a string
tryhaskell.pages.unString = function(str){
    return str.replace(/^"(.*)"$/,"$1").replace(/\\"/,'"');
}

// Random message from a list of messages
tryhaskell.pages.rmsg = function(choices) {
    return choices[Math.floor((Math.random()*100) % choices.length)];
}

// Simple HTML encoding
tryhaskell.pages.htmlEncode = function(text,shy){
    var x = $('<div></div>');
    x.text(text);
    return x.html();
}

// The nemesis
tryhaskell.nemesis = "chirs";

// All pages
tryhaskell.pages.list =
    [
        {title:'Got five minutes?',
         guide:
         '<div class="indent">' +
         '<h3>Got 5 minutes?</h3>' +
         '<p>Type <code title="Click me to insert &quot;help&quot; into the console." style="cursor: pointer;">help</code> to start the ' +
         'tutorial.</p>' +
         '<p>Or try typing these out and see what happens ' +
         '<small class="note">(click to insert)</small>:</p>' +
         '<p>' +
         '<code title="Click me to insert &quot;23 * 36&quot; into the console." style="cursor: pointer;">23 * 36</code> or <code title="Click me to insert &quot;reverse ' +
         '&quot;hello&quot;&quot; into the console." style="cursor: pointer;">reverse ' +
         '"hello"</code> or <code title="Click me to insert &quot;foldr (:) [] [1,2,3]&quot; into the console." style="cursor: pointer;">foldr (:) [] [1,2,3]</code> or <code title="Click me to insert." style="cursor: pointer;">do line <- getLine; putStrLn line</code>' +
         '</p>' +
         '<p><a href="http://hackage.haskell.org/package/pure-io/docs/PureIO.html#g:2">These</a> IO actions are supported in this app.</p>' +
         '<p><strong>Other cool learning places</strong></pa>' +
         '<p class="clearfix">' +
         'You can also run real Haskell code—file I/O, ' +
         'web apps, and lots more in <a href="https://www.fpcomplete.com/page/project-build">an online IDE</a>. See also the <a href="https://www.fpcomplete.com/school">school of Haskell</a> for practical tutorials.' +
         '</p>' +
         '</div>' +
         '</div>'
        },
        ////////////////////////////////////////////////////////////////////////
        // Lesson 1

        // Simple addition
        {lesson:1,
{'fraction_non_alphanumeric': 0.21540203850509626, 'fraction_numerical': 0.010645526613816535, 'mean_word_length': 2.439252336448598, 'pattern_counts': {'":': 0, '<': 76, '<?xml version=': 0, '>': 75, 'https://': 4, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1981028', 'n_tokens_mistral': 1420, 'n_tokens_neox': 1363, 'n_words': 359}