> Принято говорить, что, в целом, язык ленивый, а вся неленивость/энергичность (eagerness) находится (так и хочется сказать, заточЕна) внутри монад. Но дело в том, что любая Haskell-программа находится внутри монады IO. В итоге оказывается, что ленивыми в Haskell являются только чистые функции, а все вычисления (в понимании программистском), которых, на самом деле, большая часть — все равно остаются энергичными.
запредельная каша в голове, увы :(
я ж не обижаюсь, правда. здесь действительно написана каша.
при том что центральный тезис статьи (про то что монада — это стратегия вычисления) в общем верный.
> То, что в других языках представляет из себя единую ткань вычислений, в рамках Haskell разделено на 2 класса: чистые (обычные функции) и «грязные» (монады).
это не так
> Это приводит к разделению (дублированию) синтаксиса
это не так. синтаксический сахар do здесь нерелевантен — некоторый монадический код легче пишется без него.
> На практике же введение дополнительных правил приводит к тому, что появляется определенный предел выразительности языка и близости его к предметной области.
> концепция монады, монадного трансформера и т.д. неимоверно далеки от любой предметной области, которая встречается при программировании, а абстрагировать их средствами Haskell не удастся.
удивительные высказывания! просто удивительные. особенно поражает изобилие примеров, демонстрирующих ход мысли, ага.
> Более того, само понятие вычисления, которое в других языках остается имплицитным, в Haskell'е достается на поверхность. Именно с этим, по-моему, связанны частые претензии к преувеличенной сложности Haskell программ.
угу. давайте оставим вычисление имплицитным, и будем искать race conditions и deadlocks до посинения.
> (вот, в С не было стратегии вычисления Exception, а в С++ появилась :)
> Практического смысла в Haskell пока почти нет никакого.
угу. лет через пятнадцать в очередном дистрибутиве PHP всё это появится, и Вы начнете этим пользоваться да нахваливать. Лямбду вам уже подогнали, не прошло и 30 лет.
Гл. 1. «Протокол HTTP»
Гл. 2. «Алгоритмы и структуры данных»
Гл. 3. «Устройство сетевых серверов»
для меня было неприятным открытием история про volatile…
github, anyone?
ну слава богу, ни плесневелого, ни гнилого, в этом тексте нет!
вот придумают люди сравнение.
я про конкретно минусы моих замечаний к блог-посту lisp-univ-etc.blogspot.com/2009/11/blog-post.html, который якобы «всё понятно объясняет»
я уж не стал бы нос воротить.
ага. потом они будут лечиться по статьям которые им понятны (из газеты московский комсомолец).
потом они будут развивать науку по учебникам, которые им понятны (всю современную физику — в топку!)
ну в общем тоже позиция.
все равно она «лучше», чем то, что написано сверху?
запредельная каша в голове, увы :(
я ж не обижаюсь, правда. здесь действительно написана каша.
при том что центральный тезис статьи (про то что монада — это стратегия вычисления) в общем верный.
это не так
> Это приводит к разделению (дублированию) синтаксиса
это не так. синтаксический сахар do здесь нерелевантен — некоторый монадический код легче пишется без него.
> На практике же введение дополнительных правил приводит к тому, что появляется определенный предел выразительности языка и близости его к предметной области.
> концепция монады, монадного трансформера и т.д. неимоверно далеки от любой предметной области, которая встречается при программировании, а абстрагировать их средствами Haskell не удастся.
удивительные высказывания! просто удивительные. особенно поражает изобилие примеров, демонстрирующих ход мысли, ага.
> Более того, само понятие вычисления, которое в других языках остается имплицитным, в Haskell'е достается на поверхность. Именно с этим, по-моему, связанны частые претензии к преувеличенной сложности Haskell программ.
угу. давайте оставим вычисление имплицитным, и будем искать race conditions и deadlocks до посинения.
> (вот, в С не было стратегии вычисления Exception, а в С++ появилась :)
как это не было?
std::pair<T, T> solve действительно можно передать int в качестве T.
да
напишите функцию to_integer(), там будет обход AST и превращения типа case '/': return x / y; case '*': return x * y;
речь-то шла о том, что хаскель даёт доступ непосредственно к своему собственному AST.
хаскельное решение ближе к языку.
угу. лет через пятнадцать в очередном дистрибутиве PHP всё это появится, и Вы начнете этим пользоваться да нахваливать. Лямбду вам уже подогнали, не прошло и 30 лет.
Это называется «вечно плестись в хвосте». :)
ну и опять же, понимания читателю не добавлю.
для полного счастья мне не хватает тут комментария «чё очки нацепил, умный самый?»
дааа, ребята… :-(