code: function head(foldable) {
      //  Fast path for arrays.
      if (Array.isArray (foldable)) {
        return foldable.length > 0 ? Just (foldable[0]) : Nothing;
      }
      return Z.reduce (function(m, x) { return m.isJust ? m : Just (x); },
                       Nothing,
                       foldable);
    }
docs: # head :: Foldable f => f a -> Maybe a . . Returns Just the first element of the given structure if the structure . contains at least one element; Nothing otherwise. . . ```javascript . > S.head ([1, 2, 3]) . Just (1) . . > S.head ([]) . Nothing . . > S.head (Cons (1) (Cons (2) (Cons (3) (Nil)))) . Just (1) . . > S.head (Nil) . Nothing . ```