Functional Programming

Functional Programming is a Programming Paradigm in which programs are mostly built by applying and composing functions.

Reducer

A reducer is a function that iterates over a list, applying a certain operation to all elements. On each call, it sends the previous result as well as the next element on the list. Only the last result is preserved.

Iterative:

def reduce(fn, lst):
  res = lst[0]
  for x in lst[1:]:
    res = fn(res, x)
  return res

Recursive:

def reduce(fn , lst):
  if len(lst) == 1:
    return lst[0]
  else:
    return fn(lst[0], reduce(fn, lst[1:]))

Filter

A filter receives a predicate and a list and then it checks for the elements that satisfy the predicate. Only those are returned.

Iterative:

def filter(fn, lst):
  res = []
  for x in lst:
    if fn(x):
      res = res + [x]
  return res

Recursive:

def filter(fn, lst):
  if lst == []:
    return lst
  elif fn(lst[0]):
    return [lst[0]] + filter(fn, lst[1:])
  else:
    return filter(fn, lst[1:])

Map

A map transforms a certain list by applying the same operation to all elements.

Iterative:

def map(fn, lst):
  res = list()
  for e in lst:
    res = res + [fn(e)]
  return res

Recursive:

def map(fn, lst):
  if lst == []:
    return lst
  else:
    return [fn(lst[0])] + map(fn, lst[1:])