Пятничный Elm (Часть VI)
Запись от loothood размещена 27.01.2016 в 17:41
Показов 1795
Комментарии 0
|
Пятничный Elm. Аннотации Типов (Часть VI) Одна из основных характеристик Elm - система статической типизации. Благодаря статической типизации, никогда не произойдет ошибок вида "runtime exception", если программа прошла стадию компиляции. В данной заметке мы рассмотрим систему типов и аннотацию типов более подробно. О серии "Пятничный Elm" Это шестой пост серии заметок о языке программирования Elm. Цель данной серии - дать читателям знания от уровня "Что такое Elm" до "Гуру Elm", шаг за шагом. Описания типов против интерфейса типов Не смотря на то что Elm - статически типизированный язык, в предыдущих статьях мы не описывали типы данных. Причина в том, что Elm может определить тип практически любого выражения самостоятельно. Давайте вспомним некоторые функции из предыдущей статьи и перепишем их с описанием типов. Тип функции объявляется в строке выше самой функции:
Для примера рассмотрим участок кода square : number -> number - это аннотация для определения функции square. Аннотация типов должна располагаться на строку выше, чем определение функции. Она состоит из имени функции, двоеточия и типов всех входных и выходных параметров, разделенных между собой стрелкой ->. Обратите внимание что в аннотации нет различий между входными и выходными параметрами. Например, для функции multiply, в аннотации описаны три переменных типа number. Если вы изучали другие языки программирования, то, возможно, думали что аннотация для этой функции должна выглядеть так: (number, number) -> number, но это не так. Разделитель первых двух входных параметров -> точно такой же как и между вторым входным и выходным параметрами. Объясняется это каррированием. Другими словами, функция multiply принимает на вход только один параметр и возвращает функцию с аннотацией number -> number. Для иллюстрации:
Композиция типов Давайте рассмотрим остальные функции из предыдущей статьи(и их аннотации типов):
Генерация аннотации типов автоматически Можно переложить на плечи компилятора задачу по определению типов функций и переменных. Для этого, надо скомпилировать код без аннотации типов с флагом --warn. Например, если скомпилировать код из предыдущей заметки: elm-make --warn Fuctions.elm
Подведем итоги Использовать аннотацию типов или нет - решать вам. В любом случае, в руководстве Elm по стилистике кода дают совет использовать аннтоации для всех функций верхнего уровня. По моему опыту, гораздо проще находить ошибки в коде. И, честно говоря, даже компилятор может ошибиться в определении типа функции. Считаю что трата времени на ручную аннотацию, полностью окупается. Система типов в Elm гораздо больше, чем описана в статье - объединенные типы, алиасы типов, переменные типов, кортежи, записи и т.д. - все это будет рассмотрено в следующих статьях. оригинал | ||||||||||||||||||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


