@haskellru

Страница 285 из 1551
Dmitry
06.06.2017
06:15:14
в хаскеле есть мутабельные структуры данных.

Pepe
06.06.2017
06:16:13
за ними не видно движения электронов по проводам
Они не подходят потому что за ними не видно логики программы. Я бы также сказал что не надо на АСМ коестики нолики писать

Vladislav
06.06.2017
06:16:14
в хаскеле есть мутабельные структуры данных.
есть, но язык задизайнен так, чтобы discourage (как это по-русски, кстати?) их использование

Google
Dmitry
06.06.2017
06:16:20
как и в любом другом языке, можно писать мутабельно или иммутабельно, в зависимости от того, что нужно в данный конкретный момент.

ну он их ровно в той же степени не поощряет, что и ввод-вывод. однако ввод-вывод постоянно используется и никаких особых проблем не создаёт

Vladislav
06.06.2017
06:18:52
ну он их ровно в той же степени не поощряет, что и ввод-вывод. однако ввод-вывод постоянно используется и никаких особых проблем не создаёт
ну как минимум, код получется гораздо более громоздким, чем на императивном языке (или менее строго функциональным типа ML)

взять к примеру банальный quicksort

Shorty(Ale Chapa) Manskiy
06.06.2017
06:19:22
@aleksandrenko Здесь уже говорили про книгу Холомьева, я бы тоже ее посоветовал. Прочитаеш пару глав, и что-то на уровне крестиков-ноликов должно получаться. Но всеже это путь в никуда...

Dmitry
06.06.2017
06:20:54
@isenbaev у меня нет такой уверенности, что непременно более громоздкий. мне случалось переписывать один-в-один код каких-то императивых алгоритмов, например, linear scan register allocation. код получался примерно таким же по объему, прямо если переписывать строка-в-строку. ну, а потом можно сделать его и более компактным, чем изначальный алгоритм, при желании

Dmitry
06.06.2017
06:22:49
hof + infix operators + использование библиотек приводит к более компактному коду, как правило.

ну и всегда можно возразить, что а вот другие вещи выражаются компактнее в хаскеле, поэтому в среднем выходит точно не хуже.

ну и тут, конечно, нужны примеры

иначе это всё разговор вообще непонятно о чём.

Vladislav
06.06.2017
06:26:31
ну и тут, конечно, нужны примеры
я привел пример - quicksort :)

Dmitry
06.06.2017
06:29:45
https://stackoverflow.com/questions/7717691/why-is-the-minimalist-example-haskell-quicksort-not-a-true-quicksort

Google
Dmitry
06.06.2017
06:30:10
приводятся в итоге "true qsort implementations" которые не длиннее, чем.

например, import qualified Data.Vector.Generic as V import qualified Data.Vector.Generic.Mutable as M qsort :: (V.Vector v a, Ord a) => v a -> v a qsort = V.modify go where go xs | M.length xs < 2 = return () | otherwise = do p <- M.read xs (M.length xs `div` 2) j <- M.unstablePartition (< p) xs let (l, pr) = M.splitAt j xs k <- M.unstablePartition (== p) pr go l; go $ M.drop k pr

мутабельно. in-place.

Pepe
06.06.2017
06:32:40
приводятся в итоге "true qsort implementations" которые не длиннее, чем.
The true quicksort has 2 beautiful aspects: Divide and conquer; break the problem into two smaller problems. Partition the elements in-place. The short Haskell example demonstrates (1), but not (2). How (2) is done may not be obvious if you don't already know the technique!

Отличный ответ особенно последняя фраза

Dmitry
06.06.2017
06:33:25
ну и? там же приводятся примеры с in-place

Pepe
06.06.2017
06:34:01
ну и? там же приводятся примеры с in-place
Я про то что "неочевидно как если уже не знаешь способа"

Dmitry
06.06.2017
06:34:43
ну наверное, in-place подразумевает мутабельность. и если использовать мутабельные структуры, то сразу и очевидно. если можешь написать хоть на чём-то, то можешь и на хаскелле.

Vasiliy
06.06.2017
06:35:00
отличная фраза - неочевидно, как мутировать вектор, если не знаешь, как его мутировать

Dmitry
06.06.2017
06:35:09
логично!

Vasiliy
06.06.2017
06:35:31
то же самое можно и про любой другой язык сказать - неочевидно, как писать на плюсах, если не знаешь, как писать на плюсах

Dmitry
06.06.2017
06:35:50
моё любимое - это использование замыканий в плюсах.

точнее, не в плюсах. в си.

в плюсах-то всё очевидно.

Vasiliy
06.06.2017
06:36:12
омфг

это которые расширением gcc сделаны?

Dmitry
06.06.2017
06:36:40
не, с этим-то любой сможет

Dmitry
06.06.2017
06:36:50
а зачем?

Pepe
06.06.2017
06:36:59
You will notice that the above code is very, very long. The heart of it is about as long as the C code, though each line is often a bit more verbose. This is because C secretly does a lot of nasty things that you might take for granted. For example, a[l] = a[h];. This accesses the mutable variables l and h, and then accesses the mutable array a, and then mutates the mutable array a. Holy mutation, batman! In Haskell, mutation and accessing mutable variables is explicit

Google
Dmitry
06.06.2017
06:37:40
выше приведен довольно компактный код

который короче, чем си.

Vasiliy
06.06.2017
06:38:03
это гениально, да

Pepe
06.06.2017
06:38:06
выше приведен довольно компактный код
Там в коментах написано что он не корректен. Не знаю так ли это

Dmitry
06.06.2017
06:38:37
но это все равно довольно пустое. можно согласиться, что для каких-то вещей код будет длиннее. для каких-то - короче.

Vasiliy
06.06.2017
06:38:43
потому что в случаях, когда тебе не нужна мутабельность в том же си, ты обмазываешься const и всё равно остаёшься по уши в сайдэффектах

Vladislav
06.06.2017
06:39:01
а зачем?
эм, потому что в c++ можно еще короче написать quicksort тогда: std::sort(...), и все

Dmitry
06.06.2017
06:39:10
ну и в хаскелле так же можно

Vladislav
06.06.2017
06:39:14
или воспользоваться std::partition

ну и в хаскелле так же можно
поэтому желательно сравнивать сопостовимые имплементации

Dmitry
06.06.2017
06:40:15
т.е даже на изначально неудобных для "иммутабельного" языка алгоритмы выражаются не сильно хуже. впрочем, довольно утомительный спор, потому что одно и тоже толочь по кругу в ступе можно бесконечно

у меня есть практика написания аналогичного кода на си и хаскелле, питоне и хаскелле, окамле и хаскелле

какие-то вещи на си писать проще, но их надо писать крайне редко и мало.

в моей реальности.

Dmitry
06.06.2017
06:41:28
да. и людей туда набираю.

Pepe
06.06.2017
06:41:46
да. и людей туда набираю.
И какого рода задачи, программы?

Dmitry
06.06.2017
06:42:00
более того, я хочу сказать, что какие-то вещи, где цена ошибки крайне велика - например, embedded части

Google
Pepe
06.06.2017
06:42:01
Не знаю там многопроцессорный подсчёт чего то или что

Dmitry
06.06.2017
06:42:11
я бы писал на чем угодно, кроме си.

но не на чем

если не брать ATS. но для ATS историй успеха еще меньше, чем для хаскелла.

потому что в ядре этом долбаном даже отладиться толком нельзя

Евгений
06.06.2017
06:43:00
Ты на хаскелле кодишь в компании какой то?
А чо в этом такого? Даже в фейсбуке есть haskell вакансии

Dmitry
06.06.2017
06:43:16
поэтому в Касперском и генерят код из ivory

@scaredpepe QoS/DPI, машинное обучение, веб, отчасти embedded

Alexander
06.06.2017
06:44:35
на хацкелях код вида unsafeRead x i >>= unsafeWrite x i . f более громоздкий

Dmitry
06.06.2017
06:44:48
но его нужно мало.

Admin
ERROR: S client not available

Alexander
06.06.2017
06:44:51
по строчкам то на то выйдет но кол-во символов больше

с другой стороны это не сильно напрягает

Dmitry
06.06.2017
06:45:15
@qnikst а ты тоже за деньги на хаскелле пишешь, небось

Pepe
06.06.2017
06:45:22
А чо в этом такого? Даже в фейсбуке есть haskell вакансии
Я интересуюсь. Лично я по пальцам могу перечесть сколько я видел хаскель вакансий в компаниях (не искав хаскель вакансии по всем компаниям а искав все вакансии в конкретных компаниях) и просто спрашиваю для информации кто что делает на хаскеле

Alexander
06.06.2017
06:45:50
а то

за деньги и на хацкелях и в разных направлениях

Dmitry
06.06.2017
06:46:09
остальная хаскельная тусовка игнорирует наш чатег

алсо у тебя не осталось ли кода от пресловутого турникета?

Vasiliy
06.06.2017
06:46:39
пишу за деньги на х-ле и плюсах, вроде ничо так

Google
Sergey
06.06.2017
06:47:10
Кажется что вы подкупили этого pep'a чтоб развлекать эту тусовку

Dmitry
06.06.2017
06:47:13
я куда-то утратил эти все проекты, на каком-то из снятых винтов видать лежат. радиоточку я заопенсорсил, а вот то, что не заопенсорсил, куда-то подевалось

Alexander
06.06.2017
06:47:48
ну мы HA решение, консалтинг Эксель на стероидах, проекты для CEA (я там в силу гражданства не участвую), всякий анализ для фармацевтов

Anatolii
06.06.2017
06:47:51
Я интересуюсь. Лично я по пальцам могу перечесть сколько я видел хаскель вакансий в компаниях (не искав хаскель вакансии по всем компаниям а искав все вакансии в конкретных компаниях) и просто спрашиваю для информации кто что делает на хаскеле
на самом деле вакансии есть, стоит только поискать и на самом деле начальство иногда не против хаскеля - надо просто подойти и спросить, но легче ныть что вакансий нету

Dmitry
06.06.2017
06:48:22
@s_ivanov ну, я вырабатываю в себе стойкость, доброжелательность и побарываю склонность к импульсивным насильственным действиям. особенно с утра. особенно, когда кофе дома кончился

Alexander
06.06.2017
06:48:26
алсо у тебя не осталось ли кода от пресловутого турникета?
врятли у меня тот ноут умер, могу попробовать поискать

Dmitry
06.06.2017
06:48:53
у меня по всему дому лежат винты, на каком-то из них должно быть. тогда я гитхабом не пользовался платным, за что и страдаю

Alexander
06.06.2017
06:50:16
Pepe тут кстати старый гость, если я правильно помню

Pepe
06.06.2017
06:51:09
на самом деле вакансии есть, стоит только поискать и на самом деле начальство иногда не против хаскеля - надо просто подойти и спросить, но легче ныть что вакансий нету
Я не ною) я и не хаскель разработчик но когда я интересовался то понял что хаскель мне а) не подходит б) маргинальный язык в смысле коммьюнити и вакансий

Alexander
06.06.2017
06:51:47
не только читаешь, подобные дискуссии я вроде помнб

Pepe
06.06.2017
06:52:13
Dmitry
06.06.2017
06:52:23
довольно глупо поэтому, кстати, включать тупой троллинг. назовешь человека имбицилом, пойдешь устраиваться в яндекс, а он там твой потенциальный руководитель, например

Anatolii
06.06.2017
06:53:24
Я не ною) я и не хаскель разработчик но когда я интересовался то понял что хаскель мне а) не подходит б) маргинальный язык в смысле коммьюнити и вакансий
а какой тебе подходит? потому что я чем больше изучаю его - тем больше понимаю что он подходит в подавляющем большинстве случаев

Dmitry
06.06.2017
06:53:54
не, это другой товарищ исполнил

Anatolii
06.06.2017
06:54:04
какой-то ембедед конечно на нем не попишешь - но выше писали, можно кодогенерировать

Dmitry
06.06.2017
06:54:20
в яндексе я работал, но давно не там

Страница 285 из 1551