Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Haskell крут в распараллеливание. И это настолько заруливает "умение в Си", что является основанием не учить Rust.
А разве иммутабельность только у Хаскеля? Или за счет чего крутизна в распараллеливании?
и солнце б утром не вставало, когда бы не было меня
Re[4]: Верно ли, что Haskell это декларативное программирова
ЭФ>>Haskell крут в распараллеливание. И это настолько заруливает "умение в Си", что является основанием не учить Rust. S> за счет чего крутизна в распараллеливании?
За счёт лямбд, чистоты, контекстов и do-конструкции. В общем, это описано в последней работе из списка книжек по Haskell:
2009, Simon Marlow & Simon Peyton Jones & Satnam Singh, Runtime Support for Multicore Haskell
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>>>Haskell крут в распараллеливание. И это настолько заруливает "умение в Си", что является основанием не учить Rust. S>> за счет чего крутизна в распараллеливании?
ЭФ>За счёт лямбд, чистоты, контекстов и do-конструкции. В общем, это описано в последней работе из списка книжек по Haskell: ЭФ>2009, Simon Marlow & Simon Peyton Jones & Satnam Singh, Runtime Support for Multicore Haskell
Лямбды есть во многих языках. Чистота чего? do конструкции?
Нормальным языком нельзя сказать? Насколько я знаю распараллеливание там идет за счет иммутабельности. Или я не прав?
и солнце б утром не вставало, когда бы не было меня
Re[6]: Верно ли, что Haskell это декларативное программирова
ЭФ>>2009, Simon Marlow & Simon Peyton Jones & Satnam Singh, Runtime Support for Multicore Haskell S> Лямбды есть во многих языках. Чистота чего? do конструкции? S> Насколько я знаю распараллеливание там идет за счет иммутабельности. S> Или я не прав?
Внутри себя я убеждён, что ты неправ. Поддержка от рантайма и компилятора — это не "просто иммутабельность".
S> Нормальным языком нельзя сказать?
Мне слабо́ (нехватает квалификации, надо много читать, долго думать и сформировать объяснение).
Жду помощь зала.
Варианты:
— манийная часть какого-то заболевания типа биполярки
— втюрился в статью по хаскелю на каком-нить хабре
— осеннее обострение
— действие каких-то медицинских разгоняющих психику препаратов
— действие каких-то НЕ медицинских препаратов
— тебе 14-15 лет и ты впервые прочитал про что-то крутое в программировании -> снесло крышу
— тебе 22-24, пару лет в программировании, думаешь самый крутой и все познал, почитал статью про функциональное программирование, и понял, что вот она — серебряная пуля, надо брать!!!
— графомания, но вряд ли
Больше вариантов не приходит на ум
Патриот здравого смысла
Re[7]: Верно ли, что Haskell это декларативное программирова
Здравствуйте, Serginio1, Вы писали:
S> Лямбды есть во многих языках. Чистота чего? do конструкции?
чистота функций видимо.
qsort [] = []
qsort (x:xs) = qsort small ++ mid ++ qsort large
where
small = [y | y<-xs, y<x]
mid = [y | y<-xs, y==x] ++ [x]
large = [y | y<-xs, y>x]
small и large высчитываются независимо друг от друга. И хаскель может их выполнить параллельно. Императивные языки стремаются так делать из-за потенциальной нечистоты (н-р запись в лог может быть).
Другими словами, в хаскель все функции чистые по определению. И это может использоваться для оптимизации
Re[7]: Верно ли, что Haskell это декларативное программирова
SP>small и large высчитываются независимо друг от друга. И хаскель может их выполнить параллельно. Императивные языки стремаются так делать из-за потенциальной нечистоты (н-р запись в лог может быть). SP>Другими словами, в хаскель все функции чистые по определению. И это может использоваться для оптимизации
Ну то бишь иммутабельность?
Можно проверить на скорость. В обычных языках есть выбор между иммутабельностью и мутабельностью.
А решать уменьшать конкуренцию к данным из потоков можно кучей разных способов, в том числе и иммутабельностью.
и солнце б утром не вставало, когда бы не было меня
Re[8]: Верно ли, что Haskell это декларативное программирова
S> В обычных языках есть выбор между иммутабельностью и мутабельностью.
В Haskell тоже есть. Можно сделать мутабельный контекст и внутри всё замутировать, а компилятором это будет рассматриваться как "чистая функция". Для этого и нужна do-конструкция.
конструкция
do
x <- a
b
раскрывается в
a >>= ( \x -> b )
выполняется действие a, результат которого сохраняется в некой переменной x, которая далее передается при помощи операции (»=), определенной для каждой конкретной монады, в последующие действия b.