     Atom.to_string(key) <> "\n  " <> block <> "\n"
   end
 
-  defp block_to_string([{:"->", _, _} | _] = block, fun) do
-    Enum.map_join(block, "\n", fn {:"->", _, [left, right]} ->
+  defp block_to_string([{:->, _, _} | _] = block, fun) do
+    Enum.map_join(block, "\n", fn {:->, _, [left, right]} ->
       left = comma_join_or_empty_paren(left, fun, false)
       left <> "->\n  " <> adjust_new_lines(block_to_string(right, fun), "\n  ")
     end)

  defp op_to_string(expr, fun, _, _), do: to_string(expr, fun)

  defp arrow_to_string(pairs, fun, paren \\ false) do
    Enum.map_join(pairs, "; ", fn {:"->", _, [left, right]} ->
      left = comma_join_or_empty_paren(left, fun, paren)
      left <> "-> " <> to_string(right, fun)
    end)

  end

  # left -> right
  def to_string([{:->, _, _} | _] = ast, fun) do
    fun.(ast, "(" <> arrow_to_string(ast, fun, true) <> ")")
  end

