Consider the following five snippets of JavaScript code:

var m3 = is.map( function (n) { return n + 3; }, is.from(1));
console.log(is.take(m3,10));

var m3 = is.iterates( function (n) { return n * 3; }, 3);
console.log(is.take(m3,10));

var m3 = is.filter( function (n) { return n % 3 !== 0; }, is.from(1));
console.log(is.take(m3,10));

var m3 = function () {
             var helper = function (n) {
                    return is.cons(n,helper(n + 3));
             }
             return helper(3);
};
console.log(is.take(m3(),10));

var m3 = function () {
     var helper = 
            function (n) {
               return is.cons(
                    is.hd(is.drop(is.from(n),2)),
                    function () {
                         return is.cons(
                               is.hd(is.drop(is.from(n + 3),2)),
                               function () {
                                   return helper(n + 6);
                               });
                    });
            };
     return helper(1);
};
console.log(is.take(m3(),10));

Note that each one of these code snippets ends with a print statement. Assuming that each code snippet is run by itself, how many of them will output the following list?

        [ 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 ]
1
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5

Make sure that each thunk is created/processed correctly (e.g., each tail must be frozen).