 shift = slice 1
 
 # arr.some(callback[, thisArg])
-some = uncurry (fn) -> (xs) ->
+some = curry (fn, xs) ->
   xs.some fn
 
 # arr.sort([compareFunction])

uncurry    = require './uncurry'
typeChecks = require './typechecks'

length = (xs) ->
  xs.length

# arr.concat(value1, value2, ..., valueN)
concat = uncurry (ys) -> (xs) ->
  xs.concat ys

# arr.every(callback[, thisArg])
every = uncurry (fn) -> (xs) ->
  xs.every fn

# arr.filter(callback[, thisArg])
filter = uncurry (fn) -> (xs) ->
  xs.filter fn

# arr.forEach(callback[, thisArg])
forEach = uncurry (fn) -> (xs) ->
  xs.forEach fn

# arr.indexOf(searchElement[, fromIndex])

  concat [x]

# arr.reduce(callback,[initialValue])
reduce = curry (fn, initial, xs) ->
  if initial is null
    xs.reduce fn
  else
    xs.reduce fn, initial

# arr.reduceRight(callback[, initialValue])
reduceRight = curry (fn, initial, xs) ->
  if initial is null
    xs.reduceRight fn
  else
