text: 'use strict';
  var $              = require('./$')
    , $def           = require('./$.def')
    , assertFunction = require('./$.assert').fn;
  $def($def.P + $def.F, 'Array', {
    turn: function(fn, target /* = [] */){
      assertFunction(fn);
      var memo   = target == undefined ? [] : Object(target)
        , O      = $.ES5Object(this)
        , length = $.toLength(O.length)
        , index  = 0;
      while(length > index)if(fn(memo, O[index], index++, this) === false)break;
      return memo;
    }
  });
  require('./$.unscope')('turn');