Язык Haskell: О пользе и вреде лени: различия между версиями

м
нет описания правки
(→‎Задача разложения числа на степени двойки: убраны лишние скобки (если это дидактически неверно, то пожалуйста верните их обратно).)
мНет описания правки
: <small>Исходная версия статьи (Ворожцов&nbsp;А.&nbsp;В., «Язык Haskell: О пользе и вреде лени») была опубликована в [[Журнал «Потенциал»|журнале «Потенциал»]]</small>
 
[[Файл:2_1.jpg|right]]
 
В большинстве российских школ на уроках программирования изучают языки программирования [[w:Паскаль (язык программирования)|Паскаль]], [[:w:Си (язык программирования)|Си]] или [[:w:Java|Java]]. Все они суть [[w:Процедурное_программирование|императивные языки программирования]], в которых алгоритмы описываются как последовательность действий.
ones = 1 : 1 : 1 : 1 : ones,
…</code>
 
[[Файл:2_2.jpg|right|frame|Карикатура «Учись лениться!»]]
 
Это последовательность, которая остаётся равна сама себе после добавления единицы в начало. Неленивые языки, которым не терпитcя сделать сразу то, что от них просят, очень скоро получат ошибку исполнения (например, ошибку переполнение памяти). Ленивый язык Haskell не спешит раскрывать определение, данное ему справа от знака «равно», а раскрывает его по мере необходимости. Такое «равно» называют «ленивым равно», оно по сути означает определение функции, а не операцию присваивания. Есть функциональные языки, в которых есть два типа «равно» — ленивое (определение функции) и неленивое (вычисление выражения справа и присваивание результата переменной, что слева от знака «равно»). Например, в языке [[w:Mathematica|Mathematica]] (http://wolfram.com) для определения функций используется <code>:=</code>, а для присваивания — просто <code>=</code>.
 
Подобным образом на Haskell многие алгоритмы можно записать гораздо короче, нежели на Си, Паскале да и вообще любом императивном языке.
 
[[Файл:2_3.jpg|right]]
 
Извините, если не весь изложенный материал вам понятен. В одной обзорной статье сложно дать полноценное введение в язык программирования. Большинство приведённых примеров интуитивно ясны, но их, безусловно, недостаточно, чтобы самому начать писать программы на Haskell. У автора остаётся надежда на то, что вы заинтересуетесь и опробуете все эти примеры, установив на своем локальном компьютере интерпретатор языка Haskell, и прочитаете обучающие материалы, представленные на сайтах http://haskell.org/, <!-- ссылка не работает: http://wtk.norilsk.net/pm/fp/haskell.html, -->http://www.haskell.ru/.