Pull to refresh

Comments 52

Какое адское чтиво на ночь. Спасибо за проделанную работу.
Очень интересно, Но, все таки, слишком сжато
Если бы, вот Perl это да, лучше не читать.
Помоему вы нервничали, когда о Перле писали?
Не пытайтесь читать Haskell вслух, можно ненароком что-нибудь вызвать :)
Не думаю, что я бы много понял из этой статьи, если бы не знал Haskell до ее прочтения. Очень сумбурное изложение в стиле «а еще под нашу музыку можно много чего делать» ©
Я не знаю Haskell, да и с функциональными языками сталкивался только в теории, но вроде смысл понятен, хотя синтаксис для меня очень и очень необычный.
Я за то, чтобы у людей был выбор.
На русском не так уж много туториалов по Хаскелу. А RWH и YAHT больше по объему и не всегда проще.
UFO just landed and posted this here
И она даже упоминается в тексте этой статьи, если Вы ее конечно прочитали.
Она уже на русском в бумаге продается
UFO just landed and posted this here
Спасибо. Сложновато, но в целом понять можно.

> Многие из этих концепций помогут вам стать лучшим программистом
Вы хотели сказать более лучшим?)

> Вызов чистой функции с одними и теми же параметрами всегда даст один и тот же результат.
Math.random?
random — не чистая функция)
Я, в принципе, так и подумал. Просто написано не очень точно.
> Haskell проводит четкую границу между чистыми функциями и функциями, производящими сайд эффекты.
Получается, любая функция, которая не производит сайд-эффекты — чистая
В определенном смысле, так и есть. Потому что без общения с внешним миром или сохранения внутренного состояния реализовать рандом невозможно.
А чтения состояния сайд-эффектом считается?
Чтение не является сайд эффектом. Но результат зависит не только от аргументов ф-ии.
Нарушено только одно из условий, но этого достаточно
Во второй части будет более четкое деление. Math.random на самый страшный вариант.
Как насчет readline?
Хоть это и перевод статьи и это в самой статье не сказано, но может в комментариях кто-то объяснит какие концепции из того же Haskell смогут пригодится в том же императивном программировании. Сам вот сейчас немного Haskell изучаю потихоньку в свободное время.
Функции высших порядков и ленивость. Остальное, вроде бы, применять не получится.
Впрочем, и то и другое вряд ли можно назвать концепцией из haskell.
Монады, монады же.
LINQ — чистой воды монада, Async штуки очень хорошо описаются монадами.

Функциональный взгляд на проблему может упростить многое. Идеи используются не только в Хаскеле, но он — самый мощный на данный момент функциональный язык.

Чистые функции == легкое тестирование, уменьшение головняка при параллелизации (Erlang)
Функции высшего порядка == удобная композиция (jQuery)
МонадЫ == еще более удобная композиция (LINQ, Rx ..)
Вывод типов — это просто надо прочуствовать.

Я планирую сделать еще один перевод, там будет функциональный подход в Javascript. На простом примере пошагово будут показаны многие плюшки функциональности.
Вывод типов — это просто надо прочуствовать.

Лучший способ проникнуться величием системы типов в Haskell — почитать исходники SAGE, относящиеся к определению базового кольца и конструктору матриц. Написано оно на Python, и начинаешь задумываться, стоит ли в действительности достигаемая гибкость такой запутанности кода, когда имеется Haskell.
UFO just landed and posted this here
Более лучшим специально не хотел писать после «стали жить более лучше» :)
О мой мозг! Какой ужасный прекрасный язык!
UFO just landed and posted this here
>Имея список целых чисел, необходимо посчитать сумму четных чисел в списке.
В JavaScript тоже можно писать fold reduce.
var numlist = [1,2,3,4,5];
function sumFn(a,b) { return a + b }
function even(a) { return a % 2 == 0 }
var sum = numlist.filter(even).reduce(sumFn, 0);
console.log(sum);
Javascript — очень красивый функциональный язык. По сути такой fold можно написать на любом языке, поддерживающем ФВП.
Но для этого надо понимать что такое ФВП и зачем они нужны. А введения в JS не рассказывают об этом.

stay tuned, скоро будет статья по функциональному JS :)
Собственно, в realworldhaskell показывается, как все эти красивые функции писать на чистом haskell.
Например,
my_foldl :: (a -> b -> a) -> a -> [b] -> a
my_foldl f a [] = a
my_foldl f a (x:xs) = my_foldl f (f a x) xs
Вы не поверите, но в этой статье есть нечто похожее ;)
foldl f z [] = z
foldl f z (x:xs) = foldl f (f z x) xs
</haskell>
Да, мой косяк. Статью читал по диагонали, чтобы убедиться, что всё знаю, и этот кусок просмотрел)
Выложили бы это добро в fb2/mobi/epub — цены бы не было.
кстати, на викибукс есть викиучебник по хаскелю в формате pdf, сверстанный под 6-дюймовые читалки…
Спасибо за ссылку. Жалко на русском нет. На английском тяжелее вопринимается.
Да, помню его. Я получил книжку 130 Мб и так её и не попробовал на читалке открыть.
Думаю проще отдельно книгу сделать из HTML, чем всё избранное сейчас прогонять. Но всё равно спасибо за полезную вещь.
Кидаете файл identifiers.txt в папку со скриптом, в него записываете id статей, которые хотите сконвертировать, по одному на строку. (id — это число, стоящее в конце адреса, т.е., например, id этой статьи — 152889) Запускаете скрипт, ???, profit.
Спасибо за статью!
Прошу прощения, у меня у одного примеры скачиваются с кучей HTMLя?
Спасибо за статью, ждем продолжения!

ЗЫ: Не совсем функционально, зато рекурсивно и в одну строчку :)

int sum(int* x) 
{ 
  return x[0]?(((x[0]%2)?0:x[0])+sum(x+1)):0; 
}
Отчего же, вполне функционально.
Изменяемых переменных нет.
Рекурсивный обход.
Fold чистой воды.
Красиво )
Почти полный копипейст с книги. Стыдоба.
Не совсем уловил. Какой книги то?
Большущее спасибо за перевод, на досуге попробую придумать не математические задачи, где может понадобиться Haskell и реализовать их )

P.S. Думаю, имеет смысл добавить ссылку на вторую статью.
Какое ацкое чтиво солнечным утром четверга :-D Спасибо за перевод, интересный материал =)
Вообще, программа, выводящая введенное имя с приветствием на python состоит из 1-й строки и выглядит как-то так:

print("Privet, " + input("enter your name: "))
Я понимаю что статье — много лет, но вот я набрёл на неё, а ссылка на Real World Haskell — не работает :(

Сначала я огорчился, но потом случайно набрёл на работающую ссылку.

Надеюсь, это она: book.realworldhaskell.org
Only those users with full accounts are able to leave comments. Log in, please.