Лабораторная работа №1. Haskell

  • 04 окт. 2011 г.
  • 3051 Слова
Лабораторная работа №1

1 Цель работы
Приобрести навыки работы с интерпретатором языка Haskell. Получить представление об основных типах языка Haskell. Научиться определять простейшие функции.

2 Основы работы с интерпретатором Hugs
Для выполнения лабораторных работ будет использоваться интерпретатор языка Haskell. Существует несколько реализаций интерпретатора; в настоящем курсе будетиспользоваться интерпретатор Hugs (это название является аббревиатурой слов «Haskell users’ Gofer system», Gofer — название языка программирования, который был одним из предшественников Haskell.) После запуска интерпретатора Hugs на экране появляется диалоговое окно среды разработчика, автоматически загружается специальный файл предопределений типов и определений стандартных функций на языке Haskell(Prelude.hs), и выводится стандартное приглашение к работе. Это приглашение имеет вид Prelude>; вообще, перед символом > выводится имя последнего загруженного модуля. После вывода приглашения можно вводить выражения языка Haskell, либо команды интерпретатора. Команды интерпретатора отличаются от выражений языка Haskell тем, что начинаются с символа двоеточия (:). Примером команды интерпретатораявляется команда :quit, по которой происходит завершение работы интерпретатора. Команды интерпретатора можно сокращать до одной буквы; таким образом, команды :quit и :q эквивалентны. Команда :set используется для того, чтобы установить различные опции интерпретатора. Команда :? выводит список доступных команд интерпретатора. В дальнейшем мы рассмотрим другие команды.

1

3

Типы

Программы наязыке Haskell представляют собой выражения, вычисление которых приводит к значениям. Каждое значение имеет тип. Интуитивно тип можно понимать просто как множество допустимых значений выражения. Для того, чтобы узнать тип некоторого выражения, можно использовать команду интерпретатора :type (или :t). Кроме того, можно выполнить команду :set +t, для того, чтобы интерпретатор автоматически печатал типкаждого вычисленного результата. Основными типами языка Haskell являются: • Типы Integer и Int используется для представления целых чисел, причем значения типа Integer не ограничены по длине. • Типы Float и Double используется для представления вещественных чисел. • Тип Bool содержит два значения: True и False, и предназначен для представления результата логических выражений. • Тип Char используется дляпредставления символов. Имена типов в языке Haskell всегда начинаются с заглавной буквы. Язык Haskell является сильно типизированным языком программирования. Тем не менее в большинстве случаев программист не обязан объявлять, каким типам принадлежат вводимые им переменные. Интерпретатор сам способен вывести типы употребляемых пользователем переменных. Однако, если все же для каких-либо целейнеобходимо объявить, что некоторое значение принадлежит некоторому типу, используется конструкция вида: переменная :: Тип. Если включена опция интерпретатора +t, он печатает значения в таком же формате. Ниже приведен пример протокола сессии работы с интерпретатором. Предполагается, что текст, следующий за приглашением Prelude>, вводит пользователь, а следующий за этим текст представляет ответ системы.Prelude>:set +t Prelude>1 1 :: Integer Prelude>1.2 1.2 :: Double Prelude>’a’ ’a’ :: Char Prelude>True True :: Bool 2

Из данного протокола можно сделать вывод, что значения типа Integer, Double и Char задаются по тем же правилам, что и в языке Си. Развитая система типов и строгая типизация делают программы на языке Haskell безопасными по типам. Гарантируется, что в правильной программе на языке Haskellвсе типы используются правильно. С практической точки зрения это означает, что программа на языке Haskell при выполнении не может вызвать ошибок доступа к памяти (Access violation). Также гарантируется, что в программе не может произойти использование неинициализированных переменных. Таким образом, многие ошибки в программе отслеживаются на этапе ее компиляции, а не...
tracking img