Из того, что я понимаю, number
- это своего рода класс встроенных типов, похожий на интерфейс в Java, который описывает, какие операции могут выполняться над типами, реализующими интерфейс.Но если в Java интерфейс с точки зрения потребителя задан как обычный тип, класс типа представляет собой ограничение на переменную типа, определяемое соглашением с использованием имен переменных «магического» типа, таких как number
или comparable
.
В языках с «правильной» поддержкой классов типов, таких как Haskell, вы должны указывать ограничение отдельно, т.е. Number a => a -> a
.Но в Elm, имеющем всего несколько встроенных классов типов, бремя необходимости изучать концепцию и синтаксис для этого, чтобы иметь возможность использовать несколько довольно интуитивно понятных классов встроенных типов, я считаю ненужным.Хотя вы, вероятно, не будете интуитивно понимать, что именно это означает, вы должны понимать это достаточно хорошо, чтобы хотя бы использовать большинство функций, принимающих number
s или comparable
s в качестве аргументов.Его точное значение может быть объяснено позже (хотя я иногда задаюсь вопросом, насколько позже будет официальное объяснение ...).
Я надеюсь, что это достаточно ответит на ваш вопрос, но дайте мне знать, если это все ещенеясно.