code: function array(y) {
      return function(f) {
        return function(xs) {
          return xs.length === 0 ? y : f (xs[0]) (xs.slice (1));
        };
      };
    }
docs: # array :: b -> (a -> Array a -> b) -> Array a -> b . . Case analysis for the `Array a` type. . . ```javascript . > S.array (S.Nothing) (head => tail => S.Just (head)) ([]) . Nothing . . > S.array (S.Nothing) (head => tail => S.Just (head)) ([1, 2, 3]) . Just (1) . . > S.array (S.Nothing) (head => tail => S.Just (tail)) ([]) . Nothing . . > S.array (S.Nothing) (head => tail => S.Just (tail)) ([1, 2, 3]) . Just ([2, 3]) . ```