Душа настоятельно требует
Dec. 14th, 2007 02:10 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вставить эту конструкцию
в документацию по бухгалтерской системе и сказать ИТ-отделу клиентов, что для реализации бухгалтерских расчетов используется Haskell. И что система отдается им на сопровождение.
Вообще есть мысль найти какой-нибудь встраиваемый функциональный язык и впихнуть его туда в качестве языка для составления отчетов. А то некоторые вещи на SQL ложаться плохо, а если в императивном стиле писать - дико бесят. А так были бы кортежи, паттерн-matching, всякие там map да filter да fold - сиди безумствуй в свое удовольствие.
sort [] = []
sort (x:xs) = sort (filter (< x) xs) ++ [x] ++ sort (filter (>= x) xs)
в документацию по бухгалтерской системе и сказать ИТ-отделу клиентов, что для реализации бухгалтерских расчетов используется Haskell. И что система отдается им на сопровождение.
Вообще есть мысль найти какой-нибудь встраиваемый функциональный язык и впихнуть его туда в качестве языка для составления отчетов. А то некоторые вещи на SQL ложаться плохо, а если в императивном стиле писать - дико бесят. А так были бы кортежи, паттерн-matching, всякие там map да filter да fold - сиди безумствуй в свое удовольствие.
no subject
Date: 2007-12-14 12:25 pm (UTC)no subject
Date: 2007-12-14 01:17 pm (UTC)no subject
Date: 2007-12-14 03:35 pm (UTC)no subject
Date: 2007-12-14 07:19 pm (UTC)no subject
Date: 2007-12-14 08:47 pm (UTC)Первая строка означает что сортированный пустой список [] это пустой список.
А вторая - что непустой список разделяется на его голову x и остаток xs , потом остаток фильтруется на два списка - элементы больше головы, элементы меньше головы, полученные списки сортируются вызовом той же функции, из полученных трех частей собирается результат: (отсортированные элементы меньше головы), (голова), (отсортированные элементы больше или равно чем голова).
filter - функция отображающая список на список с помощью переданного ей предиката, а предикат представлен в виде (< x) или (>= x).
В итоге получается рекурсивная сортировка, только вот я не знаю, сумеет ли хаскел оную рекурсию оптимизировать. И вообще не знаю, работает ли это, ибо увидел в комментариях в ru_programming к посту про то, что if не нужен :)
no subject
Date: 2007-12-14 11:52 pm (UTC)no subject
Date: 2007-12-15 01:00 am (UTC)no subject
Date: 2007-12-15 01:08 am (UTC)no subject
Date: 2007-12-15 11:29 am (UTC)Вот из-за этого небось хаскел и не получает распространения. Если даже обычная сортировка записывается настолько сложной для чтения конструкцией, то боюсь даже представить, что получается в более сложных случаях...
no subject
Date: 2007-12-15 11:34 am (UTC)no subject
Date: 2007-12-15 04:54 pm (UTC)no subject
Date: 2007-12-15 02:40 pm (UTC)no subject
Date: 2007-12-15 03:49 pm (UTC)