 length = (xs) ->
   xs.length
 
-# arr.concat(value1, value2, ..., valueN)
 concat = curry (ys, xs) ->
   xs.concat ys
 
-# arr.every(callback[, thisArg])
 every = curry (fn, xs) ->
   xs.every fn
 
-# arr.filter(callback[, thisArg])
 filter = curry (fn, xs) ->
   xs.filter fn
 
-# arr.forEach(callback[, thisArg])
 forEach = curry (fn, xs) ->
   xs.forEach fn
 
-# arr.indexOf(searchElement[, fromIndex])
 indexOf = uncurry (x) -> (fromIndex) ->
   if typeChecks.isArray fromIndex
     xs = fromIndex

  else
    (xs) -> xs.indexOf x, fromIndex

# str = arr.join(separator)
join = uncurry (separator) -> (xs) ->
  xs.join separator

# array.lastIndexOf(searchElement[, fromIndex])
lastIndexOf = uncurry (x) -> (fromIndex) ->
  if typeChecks.isArray fromIndex
    xs = fromIndex

    xs = fn
    do slice(0, xs).sort

splice = curry (index, howMany, ys, xs) ->
  ys = switch
    when typeChecks.isArray ys then ys
