       [1,2,3,1,2]
 
   """
-  @spec cycle(Enumerable.t) :: Lazy.t
+  @spec cycle(Enumerable.t) :: t
   def cycle(enumerable) do
     do_cycle(enumerable, &1, &2)
   end

      [2,4,6]

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

      [6,7,8,9,10]

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