Ответ 1
Learn You. В разделе Erlang о синтаксисе функций говорится, что предложения функций и операторы case в основном одинаковы, за исключением одного различия: совпадение шаблонов в clauses может обрабатывать несколько шаблонов, тогда как оператор case может обрабатывать только один оператор.
Кроме того, я считаю, что это вопрос вкуса. Я склонен использовать разные функциональные предложения, когда случаи действительно различны (как в: полная функция будет вести себя по-другому), и я использую аргументы case, когда я хочу, чтобы код расходился и снова сливался, например. для вычисления значения переменной на основе выражения.
Edit
Как указано RobertAloi в комментариях ниже, вы не ограничены при использовании case .. of
. Кроме того, как пишет rvirding, компилятор делает некоторую оптимизацию при обертке разных выражений в кортеже, чтобы обеспечить сопоставление с ними.