# File lib/facet/lisp.rb, line 223
  def zip(fun, l, m)
    if null?(l) and null?(m)
      nil
    elsif null?(l) or null?(m)
      raise ArgumentError.new("zip with unequal length lists")
    else
      cons(fun.call(car(l), car(m)), zip(fun, cdr(l), cdr(m)))
    end
  end