Докладчики : Докшин П. А Шитро А. О 1
Язык быстрой разработки надёжных, кратких и корректных программ Non- strict ( ленивый язык ) Чисто функциональный Содержит простой и логичных механизм перегрузки функций 2
Имеются средства взаимодействия с кодом на других языках программирования Есть встроенная поддержка многозадачного и параллельного программирования Развитый инструментарий Наличие большого количества библиотек с открытым исходным кодом 3
Написание модуля для реализации операций с последовательностями Модуль должен содержать следующие функции : lastSeqinitialSeqlenSeq headSeqtailSeqconSeq appSeqrevSeqfilterSeq mapSeqlistToSeqseqToList Тестирование модуля 4
5 Модуль для последовательностей tailSeq conSeq appSeq seqToList listToSeq mapSeq headSeq lastSeq filterSeq revSeq initialSeq lenSeq
Функция lenSeq – возвращает длину последовательности Функция headSeq – для непустой последовательности Seq возвращает ее голову ( самый левый элемент ) Функция tailSeq – для непустой последовательности Seq возвращает последовательность без первого элемента ; 6
Функция conSeq x xs, conSeq :: a –> Seq a –> Seq a, – возвращает последовательность, где первым элементом является x и хвостом xs Функция appSeq xs ys, appSeq :: Seq a –> Seq a –> Seq a, – соединение двух последовательностей Функция revSeq :: Seq a –> Seq a, – обращение последовательности ( аналог reverse); 7
Функция seqToList – преобразования из последовательности списка Функция listToSeq - преобразования из списка последовательности Функция filterSeq – фильтрация последовательности 8
Функция initialSeq - возвращает начальную последовательность Функция lastSeq - возвращает последний элемент Функция mapSeq - аналог функции map 9
10
Тестовая программа должна проверять все функции заданной библиотеки с параметрами, заданными ранее и в качестве результата выводить пройден тест или нет. При организации тестов необходимо особое внимание уделять работе с пустыми списками. 11
12
В результате работы над данным модулем были получены начальные знания языка функционального программирования Haskell 13
1. Саймон Пейтом Джонс « Язык и библиотеки Haskell 98» 2. S.P.Jons, P. Wadler «A static semantics for Haskell» 1991 г. 3. Зюзьков В. М. « Ленивое функциональное программирование » 2004 г. 4. Mark P. Jons, John C. Peterson «Hugs 98» 14
Докладчики : Докшин П. А Шитро А. О 15