Skip to content

Instantly share code, notes, and snippets.

@jason-s13r
Last active December 15, 2015 23:49
Show Gist options
  • Save jason-s13r/5343091 to your computer and use it in GitHub Desktop.
Save jason-s13r/5343091 to your computer and use it in GitHub Desktop.
map = (list, func = ((x, i, l) -> x)) ->
result = (func(elem, index, list) for elem, index in list)
return result
each = (list, func) ->
map(list, func)
return
filter = (list, func = ((x, i, l) -> x)) ->
result = []
((if func(elem, index, list) then result.push(elem)) for elem, index in list)
return result
reduce = (list, func = ((x, i, l) -> x), initial = 0) ->
result = initial
each(list, (elem, index, list) -> result = func(result, elem, list); return)
result
reduceRight = (list, func, initial = 0) ->
reduce(list.reverse(), func, initial)
some = (list, func = ((x, i, l) -> x)) ->
result = false
each(list, (elem, index, list) -> result = true if func(elem, index, list))
return result
every = (list, func = ((x, i, l) -> x)) ->
flip = (elem, index, list) -> !func(elem, index, list)
!some(list, flip)
a = [0, 1, 2, 3, 4, 5]
x = filter(a, (elem) -> elem % 2 == 0)
y = map(x, (elem) -> elem + 1)
z = map(x, (elem) -> elem + 5)
j = reduce(a, (p, c) -> p + c)
k = some(a, (elem) -> elem == 1)
l = every(a, (elem) -> elem < 6)
console.log 'list a', a
console.log 'x filter a', x
console.log 'y map x', y
console.log 'z map x', z
console.log 'j reduce a', j
console.log 'k some a', k
console.log 'l every a', l
each(y, (elem) -> console.log('each y', elem))
each(z, (elem) -> console.log('each z', elem))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment