- •Тема 1. Функциональная парадигма в программировании
- •1.1. Общие сведения о парадигмах программирования
- •1.2. История функционального программирования
- •1.3. Основы функционального программирования
- •1.3.2. Строгая типизация
- •1.3.3. Модульность
- •1.3.4. Функции — это значения и объекты вычисления
- •1.3.5. Чистота (отсутствие побочных эффектов)
- •1.3.6. Отложенные (ленивые) вычисления, виды вычислений (вызовы по значению и по необходимости)
- •1.3.7. Строгие функции
- •Список литературы
- •Лабораторная работа №1
- •Начало работы с Hugs
- •Установка программы
- •Команды Hugs
- •Просмотр классов
- •Просмотр зарегистрированных имён объектов
- •Просмотр конструкторов типов
- •Просмотр иерархии классов
- •Создание скрипта
- •Некоторые важные понятия
- •Упражнение.
- •Изучение файла Prelude.Hs
- •Выполнение работы
- •Задания
- •Требование нетривиальности в данном случае означает, что встречающиеся в выражениях списки должны содержать больше одного элемента. Контрольные вопросы
1.3.7. Строгие функции
Говорят, что функция, которая всегда требует значение одного из своих аргументов, является строгойпо отношению к этому аргументу. Другими словами, еслиf┴=┴, то говорят, чтоfесть строгая, точно определенная функция, в противном случае говорят о нестрого определенной функции.
Примеры:
операции сложения строгая по отношению к обоим аргументам.
f(x,y) =ifx<10thenxelsey– строгая только по отношению кx.
Благодаря строгим функциям иногда удается избежать зацикливания (найдите пример в книге Рогановой Н.А.).
Задание.Из вышеописанного сделайте выводы о том, почемуHaskellявляется языком ФП (или см. книгу Рогановой Н.А.).
Список литературы
Обязательная
Хювёнен Э., Сеппенен И. Мир Lisp’а. В 2-х томах. М.: Мир, 1990.
Bird R. Introduction to Functional Programming using Haskell. 2-nd edition, Prentice Hall Press, 1998.
Филд А., Харрисон П. Функциональное программирование. М.: Мир, 1993.
Хендерсон П. Функциональное программирование. Применение и реализация. М.: Мир, 1983.
Рекомендуемая
Fokker J. Functional programming. Dept. of CS. Utrecht University, 1995.
Thompson S. Haskell: The Craft of Functional Programming. 2-nd edition, Addison-Wesley, 1999.
Norvig P. Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp. Los Altos, CA: Morgan Kaufmann, 1992.
Russel S. J., Norvig P. Artificial Intelligence: A Modern Approach. Englewood Cliffs, NJ: Prentice-Hall, 1995.
Henson M. Elements of functional languages. Dept. of CS. University of Sassex, 1990.
Winston P. H., Horn K. P. LISP, 3-rd edition. Reading, MA: Addison-Wesley, 1988.
Graham P. On Lisp: Advanced Techniques for Common Lisp. Englewood Cliffs, NJ: Prentice-Hall, 1994.
Charniak E., Reisbeck C., McDermott D. Artificial Intelligence Programming, 2-nd edition. Hillsdale, NJ: Lawrence Eribaum, 1987.
Бердж В. Методы рекурсивного программирования. М.: Машиностроение, 1983.
Джонс С., Лестер Д. Реализация функциональных языков. М.: Мир, 1991.
А также доступная
Городняя Л.В. Основы функционального программирования. – Интернет-университет информационных технологий – ИНТУИТ.ру, 2004.
Хендерсон П. Функциональное программирование. Приложение и реализация: Пер. с англ. - М.: Мир, 1983. - 349 с.
http://www.haskell.org– Официальный сайт языкаHaskell.
Язык и библиотеки Haskell 98. Исправленное описание. (сообщество авторов под редакцией Саймона Пейтона Джонса) http://www.haskell.ru
Н.А. Роганова. Функциональное программирование. Издательство: ГИНФО. 2002. 260 с.
Р.В. Душкин, Текст лекций по курсу «Функциональное программирование»//
http://data.mf.grsu.by/lib/Cs_Computer_science/CsFP_Funchion_programming/fpLecsMephi.rar
Р.В. Душкин, Лабораторный практикум по функциональному программированию. Инструментальное средство HUGS 98 для программирования на языке Haskell. М.: МИФИ, 2003. http://roman-dushkin.narod.ru/files/hugs.zip
Лабораторная работа №1
«Основы работы с Hugs 98. Панель инструментов HUGS 98. Команды консоли HUGS 98.
Начало работы с Hugs. Команды интерпретатора. Сессии и скрипты. Обзор файла Prelude.hs»