Сейчас я пытаюсь узнать Scala, имея немного опыта в Haskell. Одна вещь, которая показалась мне странной, заключается в том, что все функциональные параметры в Scala должны быть аннотированы типом - то, что Haskell не требует. Почему это? Чтобы попытаться выразить это как более конкретный пример: функция add написана следующим образом:
def add(x:Double, y:Double) = x + y
Но это работает только для удвоений (ну, ints тоже работает из-за неявного преобразования типов). Но что, если вы хотите определить свой собственный тип, который определяет свой собственный + оператор. Как бы вы написали функцию add, которая работает для любого типа, который определяет оператор +?