Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm not aware of specific notation, but let's first see the difference between map and splat:

map is a function that takes a list and a function and returns a list

  map :: (function, list) -> list
splat is a function that takes a function and returns a function that takes a list and returns a list

  splat :: (function)->((list)->list)
That is sort of effectively the reverse order of parameters for map. What applyFirst does is, it takes a function and a parameter and returns a function that takes more params and prepends the given one. applyLast is similar, but appends the given one. Let's walk through the application of applyFirst(applyLast, map)(fn)(list)

  applyFirst(applyLast, map)(fn)(list)
  applyLast(map, fn)(list) -- here applyFirst has supplied the map param to applyLast and fn is the given param
  map(list, fn) -- and here applyLast as supplied the fn param to map, putting list first
If you supply more parameters, you'd get:

  applyFirst(applyLast, map)(a, b)(c, d)
  ...
  map(c, d, a, b)
Which wouldn't work with map per se, but shows how the applyFirst(applyLast, map) construction works.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: