       [1,2,3,4,5]
 
   """
-  @spec take_while(Enumerable.t, (element -> as_boolean(term))) :: Lazy.t
+  @spec take_while(Enumerable.t, (element -> as_boolean(term))) :: t
   def take_while(enumerable, f) do
     Lazy[enumerable: enumerable,
          fun: fn(f1) ->


  """

  @spec iterate(element, (element -> element)) :: Lazy.t
  def iterate(start_value, next_fun) do
    fn acc, fun ->
      do_iterate(start_value, next_fun, fun.(start_value, acc), fun)

      [1,3]

  """
  @spec reject(Enumerable.t, (element -> as_boolean(term))) :: t
  def reject(enumerable, f) do
    Lazy[enumerable: enumerable,
         fun: fn(f1) ->
