   #     Enum.empty? [] #=> true
   #     Enum.empty? [1,2,3] #=> false
   #
+  def empty?(collection) when is_list(collection) do
+    collection == []
+  end
+
   def empty?(collection) do
     empty?(I.iterator(collection), collection)
   end

  #     Enum.map [1, 2, 3], fn(x) { x * 2 }
  #     #=> [2, 4, 6]
  #
  def map(collection, fun) do
    map(I.iterator(collection), collection, fun)
  end

  #
  # This is used internally by `for` and should not be used directly.
  def for(lists, fun) do
    iterators = lc list in lists, do: { list, I.iterator(list) }
    [{h,iterator}|t] = iterators
    first_comprehension_each iterator, iterator.(h), t, [], fun
  end
