 
   # Called as ensure_evaled(list, {0, []}). Note acc is reversed.
   defp ensure_evaled(list, acc, expand) do
-    :lists.mapfoldl(fn
+    fun = fn
       {:|, meta, [head, tail]}, acc ->
         {head, acc} = ensure_evaled_element(head, acc)
         {tail, acc} = ensure_evaled_tail(expand.(tail), acc, expand)
         {{:|, meta, [head, tail]}, acc}
+
       elem, acc ->
         ensure_evaled_element(elem, acc)
-    end, acc, list)
+    end
+
+    :lists.mapfoldl(fun, acc, list)
   end
 
   defp ensure_evaled_element(elem, acc) when is_number(elem) or is_atom(elem) or is_binary(elem) do
     {elem, acc}
   end
+
   defp ensure_evaled_element(elem, acc) do
     ensure_evaled_var(elem, acc)
   end

      #=> %{b: 1}

  """
  @spec tl(nonempty_maybe_improper_list(elem, tail)) ::
        maybe_improper_list(elem, tail) | tail when elem: term, tail: term
  def tl(list) do
    :erlang.tl(list)
  end

      false

  """
  @spec term >= term :: boolean
  def left >= right do
    :erlang.>=(left, right)
  end
