Haskell является чисто функциональным языком программирования общего назначения, который включает много последних инноваций в разработке языков программирования. Haskell обеспечивает функции высокого порядка, нестрогую семантику, статическую полиморфную типизацию, определяемые пользователем алгебраические типы данных, сопоставление с образцом, описание списков, модульную систему, монадическую систему ввода - вывода и богатый набор примитивных типов данных, включая списки, массивы, целые числа произвольной и фиксированной точности и числа с плавающей точкой. Haskell является и кульминацией, и кристаллизацией многих лет исследования нестрогих функциональных языков.
Это описание определяет синтаксис программ на Haskell и неформальную абстрактную семантику для понимания смысла таких программ.
Мы не рассматриваем способы, которыми программы на Haskell управляются, интерпретируются, компилируются и т.д., поскольку они зависят от реализации, включая такие вопросы, как характер сред программирования и сообщения об ошибках, возвращаемые для неопределенных программ (т.е. программ, формальное вычисление которых приводит к $$\perp$$ ).
В этом разделе мы описываем абстрактную синтаксическую и семантическую структуру Haskell , а также то, как она соотносится с организацией остальной части описания.
Данное описание направлено снизу вверх по отношению к синтаксической структуре Haskell.
Лекции, которые не упомянуты выше, - это лекция 6, которая описывает стандартные встроенные типы данных и классы в Haskell , и лекция 7, в которой рассматривается средство ввода - вывода в Haskell (т.е. как программы на Haskell связываются со внешним миром). Также есть несколько лекций, описывающих Prelude, конкретный синтаксис, грамотное программирование, подробное описание производных экземпляров и псевдокомментарии, поддерживаемые большинством компиляторов Haskell.
Примеры фрагментов программ на Haskell в данном тексте даны в машинописном шрифте:
let x = 1
z = x+y
in z+1
"Дыры" во фрагментах программ, представляющие собой произвольные части кода на Haskell , написаны в курсиве, как, например, в if e1 then e2 else e3. Вообще курсивные имена являются мнемоническими, например, e - для выражений (expressions), d - для объявлений (declarations), t - для типов (types) и т.д.
Haskell заимствовал многие из удобных синтаксических структур, которые стали популярными в функциональном программировании. В этом описании значение такого синтаксического средства дается трансляцией в более простые конструкции. Если эти трансляции полностью применимы, результатом является программа, записанная в небольшом подмножестве Haskell, которое мы называем ядром Haskell.
Хотя ядро формально не определено, это по существу слегка смягченный вариант лямбда-исчисления с прямо обозначенной семантикой. Трансляция каждой синтаксической структуры в ядро дается, когда вводится синтаксис. Эта модульная конструкция облегчает объяснение программ на Haskell и предоставляет полезные рекомендации для разработчиков реализаций языка.
Результатом вычисления выражения является значение. Выражение имеет статический тип. Значения и типы не смешаны в Haskell. Тем не менее, система типов допускает определяемые пользователем типы данных различных видов и разрешает не только параметрический полиморфизм (используя традиционную структуру типов Хиндли-Милнера (Hindley-Milner)), но также специальный полиморфизм, или перегрузку (используя классы типов).
Ошибки в Haskell семантически эквивалентны $$\perp$$. С формальной точки зрения они не отличимы от незавершенного вычисления, поэтому язык не содержит механизма обнаружения или реагирования на ошибки. Тем не менее, реализации языка вероятно будут пытаться предоставить полезную информацию об ошибках (см. раздел 3.1).
Есть шесть видов имен в Haskell: имена переменных и конструкторов обозначают значения; имена переменных типов, конструкторов типов и классов типов ссылаются на сущности, относящиеся к системе типов; имена модулей ссылаются на модули. Есть два ограничения на присваивание имен:
Это единственные ограничения; например, Int может одновременно являться именем модуля, класса и конструктора в пределах одной области видимости.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.