Por que existem dois tipos de funções no Elixir?

Estou aprendendo Elixir e me pergunto por que ele tem dois tipos de definições de função:

funções definidas em um módulo comdefchamado usandomyfunction(param1, param2)funções anônimas definidas comfnchamado usandomyfn.(param1, param2)

Somente o segundo tipo de função parece ser um objeto de primeira classe e pode ser passado como um parâmetro para outras funções. Uma função definida em um módulo precisa ser envolvida em umfn. Há algum açúcar sintático que pareceotherfunction(myfunction(&1, &2)) a fim de tornar isso fácil, mas por que é necessário em primeiro lugar? Por que não podemos apenas fazerotherfunction(myfunction))? É apenas para permitir a chamada de funções do módulo sem parênteses como em Ruby? Parece ter herdado essa característica de Erlang, que também tem funções de módulo e divertimentos, então na verdade vem de como a VM Erlang trabalha internamente?

Existe algum benefício em ter dois tipos de funções e converter de um tipo para outro, a fim de passá-los para outras funções? Existe um benefício com duas notações diferentes para chamar funções?

questionAnswers(6)

yourAnswerToTheQuestion