Конспект лекций Рыбинск 2010





Скачать 450.1 Kb.
НазваниеКонспект лекций Рыбинск 2010
страница6/12
Дата публикации21.09.2013
Размер450.1 Kb.
ТипКонспект
100-bal.ru > Информатика > Конспект
1   2   3   4   5   6   7   8   9   ...   12

4.2Структура программы


Компиляторы и интерпретаторы языка Haskell работают с файлами с расширением *.hs, содержащими текст программы. Текст программы имеет следующую структуру:

  1. в начале программы может быть указано имя текущего модуля и экспортируемые определения;

  2. далее могут быть указаны импортируемые модули;

  3. оставшуюся часть программы занимают различные определения — определения функций, типов данных и классов.

Простейшая программа может содержать только определения функций (в таком случае импортируется только стандартный модуль Prelude, содержащий большинство стандартных функций и типов данных; имя модуля задается по-умолчанию как Main).

Далее рассмотрим подробнее определение функций.

Простейшая функция может вообще не принимать аргументов, а лишь возвращать некоторое значение. В таком случае определение состоит из имени функции, знака равенства «=», и некоторого выражения, по которому будет вычисляться значение данной функции. В привычных терминах такую функцию можно назвать переменной или константой, однако это не совсем корректно. В функциональном программировании функции без аргументов именуются символами. Рассмотрим пример:

five = 5

В данном примере объявляется символ с именем five, который имеет значение, равное целому числу 5. Имена в Haskell чувствительны к регистру, то есть Five и five являются различными именами. Кроме того, вводится дополнительное ограничение на первую букву имени — имена функций и их аргументов могут начинаться только со строчной буквы (five, max, min, x, y), а имена типов данных (Bool, Integer, Double), модулей (Main, Test) и классов (Eq, Ord, Num) — только с прописной (заглавной).

Рассмотрим пример посложнее:

one = 1

two = 2

three = one + two

Здесь объявляется три символа — one, two, three. Как видно из примера, каждое определение занимает одну строчку и разделяются они только концом строки (пустые строчки будут игнорироваться). Символы one и two определены также, как и символ five в предыдущем примере, а при определении символа three используются уже существующие определения. Как несложно догадаться, символ three будет иметь значение 3.

Порядок определений не важен, то есть следующий пример будет совершенно аналогичен предыдущему:

three = one + two

one = 1

two = 2

Загрузим наш пример в интерактивную среду GHCi. Для этого достаточно при запуске ghci в качестве параметра командной строки указать имя файла с текстом программы (например, Test.hs) (в ОС семейства Windows достаточно просто открыть файл, установленный GHC автоматически назначает ghci для открытия файлов *.hs). Если программа не содержит ошибок, то мы увидим уже знакомое приглашение:

*Main>

Здесь Main — имя текущего модуля (подробнее модули рассматриваются в соответствующей главе). GHCi позволяет вычислять любые функции из текущего модуля. Например, вычислим наш символ three:

*Main> three

3

Более сложные выражения также возможны:

*Main> (three+two)^2

25

Или:

*Main> max one two

2

Далее рассмотрим функции с аргументами. В отличие от привычных языков программирования для передачи аргументов не требуется записывать их в скобках и через запятую. Вызов функции происходит в следующем виде: func x1 x2 x3… xN, где func – имя функции, а xi – i-й аргумент. Результатом функции будет являться какой-либо объект, например, число, список, функция, лямбда-выражение либо любая другая структура данных.

Описание функции с аргументами практически не отличается от описания символов в предыдущих примерах. Определение функции располагается на отдельной строчке и имеет следующий вид: func x1 x2 x3… xN = expression, где func — имя новой функции, xi – имя i-го аргумента, expression — выражение.

Например, добавим функцию, складывающую два числа, в существующий файл Test.hs.

plus x y = x+y

Теперь мы можем перезагрузить в интерактивной среде измененный модуль. Для этого достаточно перезапустить ghci, либо воспользоваться стандартной командой «:r»:

*Main> :r

[1 of 1] Compiling Main ( Test.hs, interpreted )

Ok, modules loaded: Main.

*Main>

После этого новая функция становится доступной из интерактивной среды:

*Main> plus one 8

9

Еще один пример функции с аргументами:

f x = 2 * sin x

Каждое определение занимает одну строчку, однако, если для наглядности удобнее разделить определение на несколько строк, то можно использовать следующую особенность: каждая строчка, начинающаяся с отступа большего, чем предыдущая, считается ее продолжением. Например, можем записать функцию plus в две строки таким образом:

plus x y

= x+y

Однострочные комментарии в языке Haskell начинаются с двух тире:

plus x y = x+y --функция сложения

Блочный комментарий начинается с “{-” и заканчивается “-}”:

inc x = x+1

{- эта функция возвращает число на 1 большее

чем полученное в качестве аргумента -}
1   2   3   4   5   6   7   8   9   ...   12

Похожие:

Конспект лекций Рыбинск 2010 iconМестного самоуправления городского округа город рыбинск
В соответствии с Федеральным законом от 02. 03. 2007 n 25-фз "О муниципальной службе в Российской Федерации", законодательством о...
Конспект лекций Рыбинск 2010 iconОтчет главы городского округа город Рыбинск
«Об общих принципах организации местного самоуправления в Российской Федерации» на основе информации структурных подразделений и...
Конспект лекций Рыбинск 2010 iconКонспект лекций по курсу сд. Ф корпоративные информационные системы
Д. В. Колесов, Р. Д. Маш, И. Н. Беляев «Биология. Человек», Изд-во «Дрофа», Москва, 2010
Конспект лекций Рыбинск 2010 iconС. П. Филин Концепции современного естествознания: конспект лекций
Конспект лекций соответствует требованиям Государственного образовательного стандарта высшего профессионального образования РФ и...
Конспект лекций Рыбинск 2010 iconКонспект лекций раскрывает содержание и структуру учебной дисциплины...
Налоговое право : конспект лекций / сост доцент Р. В. Бобринев; Кузбасский институт экономики и права. – Кемерово, 2011 – 144 с
Конспект лекций Рыбинск 2010 iconКонспект лекций по дисциплине: теория систем и системный анализ санкт-Петербург...
Выбор показателя эффективности, математическая постановка задачи
Конспект лекций Рыбинск 2010 iconКонспект лекций по философии Часть 1 Античная философия Новосибирск...
Савостьянов А. Н. Конспект лекций по философии / Новосиб гос ун-т. Новосибирск, 2007. Ч. Античная философия. 68 с
Конспект лекций Рыбинск 2010 iconКонспект лекций по курсу хозяйственного права тема Понятие хозяйственного права
Кафедра Истории, социологии и права Назаров Андрей Александрович конспект лекций по курсу хозяйственного права
Конспект лекций Рыбинск 2010 iconКонспект лекций по высшей математике. В 2 частях. Часть М.: Айрис-пресс,...
Баранова Е. С., Васильева Н. В., Федотов В. Л. Практическое пособие по высшей математике. Типовые расчеты. Учебное пособие. — Спб:...
Конспект лекций Рыбинск 2010 iconОпорный конспект лекций Основные понятия, термины, законы, схемы...
Л. Н. Блинов, Н. Н. Ролле. Экология: опорный конспект лекций. Основные понятия, термины, законы, схемы. Спб.: Изд. Спбгпу. 2005....
Конспект лекций Рыбинск 2010 iconКонспект лекций Владимира Климентьева по истории философии, отредактированный...
Рекомендовано Министерством общего и профессионального образования Российской федерации в качестве учебника для студентов высших...
Конспект лекций Рыбинск 2010 iconТеория организации Конспект лекций для студентов специальности «Менеджмент организации»
Макарова н. Н. Теория организации. Конспект лекций с практическими заданиями для студентов специальности "Менеджмент организации....
Конспект лекций Рыбинск 2010 iconПисьменный Д. Т. Конспект лекций по теории вероятностей, математической...
Письменный Д. Т. Конспект лекций по теории вероятностей, математической статистике и случайным процессам. 3-е изд. М.: Айрис-пресс,...
Конспект лекций Рыбинск 2010 iconКонспект лекций

Конспект лекций Рыбинск 2010 iconКонспект лекций по дисциплине правовое регулирование маркетинговой деятельности
Опорный конспект лекций по дисциплине правовое регулирование маркетинговой деятельности
Конспект лекций Рыбинск 2010 iconКонспект лекций по дисциплине методика самостоятельной работы студента...
Отсутствие таких навыков приводит к тому, что учащиеся чувствуют беспомощность и растерянность при необходимости самостоятельно подготовить...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск