Insert anonymous functions into your pipe chains by defining and applying the function like so:
def md5(str) do
str
|> (fn(s) -> :erlang.md5(s) end).()
|> Base.encode16(case: :lower)
end
Alternatively:
def md5(str) do
str
|> (&(:erlang.md5(&1))).()
|> Base.encode16(case: :lower)
end