     Enum.map(list, &pattern/1)
   end
 
+  defp s_pattern({key, _, _} = variable) do
+    {key |> Atom.to_string(), variable}
+  end
+
+  defp s_pattern(otherwise), do: pattern(otherwise)
+
   defp pattern({key, _, _} = variable) do
     {key, variable}
   end
+
   defp pattern([arg]) do
     arg
   end
+
   defp pattern(other) do
     other
   end

    {:%{}, context, Enum.map(args, &pattern/1)}
  end

  # Handle structs, including ones with multiple keys
  # {:%, [],
  #  [{:__aliases__, [alias: false], [:Namespace]},

  """

  @doc """
  Easy destructuring of `map`, `structs`, `keyword`, with atom keys.
  String keys are supported via a special syntax `d(s%{param})`.

  ## Examples

