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

→‎Быстрая сортировка: - уж больно мелко делает текст тэг <source> </source>
(→‎Быстрая сортировка: - уж больно мелко делает текст тэг <source> </source>)
 
Выше мы рассматривали простые примеры, от которых пока далеко до реальных промышленных задач. А сейчас мы рассмотрим первый серьёзный алгоритм — [[w:Быстрая сортировка|быструю сортировку Хоара]]. Несмотря на свою «серьёзность», выглядит он подозрительно просто:
<code>
 
<code> qsort [] = []
qsort (x:xs) = qsort [y | y <- xs, y<x ] ++ [x] ++ qsort [y | y <- xs, y>=x]</code>
</code>
 
Запись «<code>qsort [] = []</code>» означает, что если на вход дан пустой
 
Тот же алгоритм на языке Си (только для целых чисел) требует гораздо больше кодирования:<br />
<big>
 
<source lang=c>void qsort(int * ds,int *de,int *ss){
int vl = *ds,*now = ds + 1,*inl = ss,*ing = ss + (de - ds);
qsort(ds + (inl - ss),de,inl + 1);
}</source>
</big>
 
Подобным образом на Haskell многие алгоритмы можно записать гораздо короче, нежели на Си, Паскале,… да и, вообще, любом императивном языке.
 
Анонимный участник