мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
haskell [13/03/2018 14:38] – [6.6 Запуск и компиляция] vlasovhaskell [02/07/2018 14:39] – [3.6 Замечания о скорости работы списочных функций] vlasov
Строка 515: Строка 515:
 Все функции, которые для выполнения нуждаются в целом списке, становятся тем медленнее, чем длиннее становится список: Все функции, которые для выполнения нуждаются в целом списке, становятся тем медленнее, чем длиннее становится список:
   * ''length xs'';   * ''length xs'';
-  * ''ltist1 ++ list2'' --- скорость зависит //только// от длины ''list1'';+  * ''list1 ++ list2'' --- скорость зависит //только// от длины ''list1'';
   * ''last xs'';   * ''last xs'';
   * ''map my_fn xs'';   * ''map my_fn xs'';
Строка 1544: Строка 1544:
 ===== Урок 7. Знакомство с монадами ===== ===== Урок 7. Знакомство с монадами =====
  
-Понятие монад пришло из чистой математики, из ее раздела под названием "теория категорий". И хотя полное понимание требует знакомства с математическим определением и свойствами, однако, возможно использование данного понятия в программировании, в частности, на языке Haskell исходя из объяснения необходимости монад или чего-либо подобного для чистого языка функционального программирования и исходя из примеров применения различных монад.+Понятие монад пришло из чистой математики, из ее раздела под названием "теория категорий". И хотя полное понимание требует знакомства с математическим определением и свойствами, однако, возможно использование данного понятия в программировании, в частности, на языке Haskellисходя из объяснения необходимости монад или чего-либо подобного для чистого языка функционального программирования и исходя из примеров применения различных монад.
  
 Необходимость монад в чистом функциональном программировании возникает из ограничения, вытекающего из основных преимуществ данного стиля программирования. Вот такой парадокс. Так, Haskell не имеет возможность вводить глобальные переменные и как-то манипулировать ими внутри определений функций. Преимущество такого подхода дает надежность и уверенность для программиста (и для компилятора!!) в том, что в программе не будет побочных эффектов. Обратной стороной медали при этом будет то, что мы не можем с легкостью манипулировать, например, каким-то системными переменными, конфигурационными данными и т.п. У нас остается только возможность каждый раз при вызове функции вносить все требуемые данные в качестве параметров. Это загромождает описание функций и требует накладных расходов при реализации. Необходимость монад в чистом функциональном программировании возникает из ограничения, вытекающего из основных преимуществ данного стиля программирования. Вот такой парадокс. Так, Haskell не имеет возможность вводить глобальные переменные и как-то манипулировать ими внутри определений функций. Преимущество такого подхода дает надежность и уверенность для программиста (и для компилятора!!) в том, что в программе не будет побочных эффектов. Обратной стороной медали при этом будет то, что мы не можем с легкостью манипулировать, например, каким-то системными переменными, конфигурационными данными и т.п. У нас остается только возможность каждый раз при вызове функции вносить все требуемые данные в качестве параметров. Это загромождает описание функций и требует накладных расходов при реализации.