def juxt(*fns):
    """ Takes a set of functions and returns a fn that is the juxtaposition
  of those fns.  The returned fn takes a variable number of args, and
  returns a vector containing the result of applying each fn to the
  args (left-to-right)

  >>> juxt(first, second, last)(list(range(10)))
  [0, 1, 9]"""

    return lambda x: [f(x) for f in fns]