Keyword function parameters in general and the "do:" parameter specifically

I am working on understanding how to write macros. In https://hexdocs.pm/elixir/macros.html this example module is given:

defmodule Unless do
  def fun_unless(clause, do: expression) do
    if(!clause, do: expression)
  end

  defmacro macro_unless(clause, do: expression) do
    quote do
      if(!unquote(clause), do: unquote(expression))
    end
  end
end

In this example “do: expression” seems to be what might be called a keyword parameter. Unfortunately, I’m not able to find any documentation that explains this syntax for function parameters. Would someone mind pointing me in the right direction? Thanks

https://hexdocs.pm/elixir/syntax-reference.html#keywords-as-last-arguments

These are the docs you’re likely looking for.

That looks helpful and I have recently skimmed those docs. I don’t, however, see any explicit mention of the keyword syntax for function parameters. Perhaps, it is implied somehow.

It works the same in the parameters as it does at the callsite of a function.

Ok. I am starting to get it. I think I’ll dig into the entire “Syntax reference” section of the docs. Thanks

It turns out that, for some unknown reason, I never paid any attention to keyword lists. After reading https://hexdocs.pm/elixir/keywords-and-maps.html#keyword-lists it’s all clear now. Thanks again.