Программирование

Ответить в тред Ответить в тред
Check this out!
Haskell тред /haskell/ Аноним 03/10/19 Чтв 22:03:55 14882561
PureDevilHaskell.png 69Кб, 413x413
413x413
Аноним 03/10/19 Чтв 22:06:06 14882592
Аноним 03/10/19 Чтв 23:11:06 14883223
Аноним 03/10/19 Чтв 23:13:09 14883254
>>1488322
Ну так тред для даунов же, вот и пикча всратая.
Аноним 05/10/19 Суб 11:43:04 14892065
>>1488256 (OP)
есть шинибуть актульнее рил ворда?
Аноним 06/10/19 Вск 00:04:06 14897476
>>1489206
ты дебил какие книги просто листай хакаге
Аноним 07/10/19 Пнд 07:57:49 14907867
RZBAohJTdKk.jpg 122Кб, 1280x664
1280x664
>>1489206
Например вот, написал недавно.
Аноним 08/10/19 Втр 20:51:06 14918778
image.png 23Кб, 1138x223
1138x223
Возможно ли без зависимых типов сделать функцию, которая гарантировано вернет смежную заданой вершине вершину в графе, а не какой-то левый int?
Аноним 08/10/19 Втр 20:53:09 14918789
Аноним 09/10/19 Срд 01:30:01 149210810
>>1491877
А если граф состоит из одной ноды?
Аноним 09/10/19 Срд 02:53:19 149212311
Аноним 09/10/19 Срд 11:29:44 149222712
>>1491877
Можно на типах одиночках, но это не точно.
Аноним 09/10/19 Срд 13:22:55 149226113
>>1489747
>листай хакаге
а если я не из деревни скрытого листа, что мне делать?
09/10/19 Срд 19:09:49 149249314
Отписался в эпичном треде.
Аноним 13/10/19 Вск 23:05:48 149602915
хаскель еще живой вообще?
Аноним 15/10/19 Втр 20:42:09 149742516
>>1496029
Живее всех живых.
Можешь посмотреть выступления Пейтона-Джонса на эту тему одного из архитекторов хаскеля.
Но если смотреть не хочешь, то суть в том, что из совершенно ненужной академической хуеты без реализации I/O на первых стадиях язык стал использоваться в продакшене двумя с половиной Васянами, что определенно лучше нуля.
Аноним 15/10/19 Втр 20:56:39 149743617
>>1496029
Скорее да чем нет

В скриптинге попизже петухона
Конкуретноспособен для написания серверлесс/микро сервисов
Общая архитектура все еще охуенна для написания любой ДСЛ шизофрении

Основные проблемы все еще провисающий низкий уровень и отсутсвие супер-топ-мейнстрим фреймворков

Из примеров

Пара случаев неведомой низкоуровневой хуйни https://github.com/haskell-servant/servant/issues/1167 https://github.com/haskell-servant/servant/issues/1165

Каким-то хуем сломанный haddock после 8.6+

Вебсокет протокол, например, вообще никак не описывает способы справления с крашем клиентов
Основная хачкельная network либа с сишным ffi просто ссылается на эту хуйню не предлагая никаких решений и хз как это решать

Еще рвут жопу бинарные либы отказывающие компелироваться из-за ссылок друг на друга

Имхо вызвано основным спонсированием микрософта который толкает свое фшарпное говно
Комунити нереально упоротое и если сможет превозмочь то возможно язык наконец-то выстрелит
Ну или окончательно утонет в ближайшие 5 лет
Аноним 16/10/19 Срд 08:50:59 149775018
>>1497436
Чем тебе F# не угодил? По-моему это лучший ЯП в экосистеме "точка нет"
Аноним 16/10/19 Срд 10:28:16 149777819
>>1497750
точка нет гавно
я скозал
Аноним 16/10/19 Срд 10:36:17 149778320
>>1497436
>В скриптинге попизже петухона
Ты знаешь, что ты поехавший?
Аноним 16/10/19 Срд 11:04:44 149779921
Аноним 16/10/19 Срд 22:52:19 149825322
Подкиньте пожалуйста сайт хохла по хаскелю, не могу найти.
Аноним 17/10/19 Чтв 14:37:56 149860923
Аноним 18/10/19 Птн 15:34:46 149935324
>>1498609
еще бы москвина притащил сюда васян васяныч
Аноним 18/10/19 Птн 19:15:38 149949725
Аноним 18/10/19 Птн 19:17:02 149949826
>>1499497
>ГОВНО
>ДРИСНЯ
>НЕАДЕКВАТ

Добавьте в шапку, девиз хачкелистов жи!
Аноним 21/10/19 Пнд 03:51:12 150119927
Аноним 21/10/19 Пнд 07:58:58 150124928
Аноним 21/10/19 Пнд 20:32:29 150178829
Аноним 21/10/19 Пнд 20:56:55 150179930
>>1501788
> tsar1997
Боже, ты и сюда пришёл. Мало тебе лора и говнокода?
Аноним 21/10/19 Пнд 20:58:21 150180231
>>1501799
Обоснуй свои потуги.
Аноним 21/10/19 Пнд 22:15:04 150186032
>>1501788
Двачую Царя. Этот Царь настоящий царь.
Аноним 21/10/19 Пнд 22:25:13 150186933
>>1501799
Царь охуенен. Я теперь буду читать Царя вместо двача, потому что на дваче - вкатывальщики и эстетствующий ФП-долбоебы, а Царь изрекает истину.
Аноним 22/10/19 Втр 00:03:09 150193434
>>1501788
Ебать там байтоговнарик сам себя обоссал, плюс ему ещё в комментариях за щеку напихали. Тяжела судьба няшабляди.
Аноним 22/10/19 Втр 00:18:45 150193835
>>1501788
Лол, откуда у него столько хейта к хаскелю и фп-шникам?
Аноним 22/10/19 Втр 00:33:07 150194536
>>1501938
Когда-то давно ФП-элита из кодача жестко нагибала всяких макакенов: джяваиндусов, пыхоплеядеров, жс-школьников и прочий скам, но сильнее всех досталось крестоопущенцам, сидаунам и прочим байтоговнарикам: их загнали под шконарь на многие годы. Несмотря на то что эпицентром этого эпик тралинга был докач и частично pr/, на остальные помойки типа жеже, лора, жуика мода перенеслась так же. ФП-элита давно уже заскучала и разбрелась, но у всяких байтоговноедов заставших эти времена при слове ФП или хаски начинают болеть старые анальные раны.
Аноним 22/10/19 Втр 01:08:00 150195037
Нормальный язык, его мой дед еще писал
Аноним 22/10/19 Втр 19:22:05 150240438
why so stupid.jpg 11Кб, 285x200
285x200
>>1501788
>Приятны сердцу такие статьи, ибо помогают развенчивать культ скорости сишки, что паразитируют на умах людей уже многие десятилетия.
>развенчивать культ скорости сишки
>культ скорости сишки
>КУЛЬТ СКОРОСТИ СИШКИ
>РАЗВЕНЧИВАТЬ

А культ скорости света они не собирались развенчивать?
ФПетушки попытались наехать на С в области, в которой С безраздельно властвует, это ничего плохого не говорит об ФП или Хачкеле, только об ебанутости ФПетушков.

Аноним 22/10/19 Втр 19:22:50 150240639
>>1501945
>ФП-элита давно уже заскучала и разбрелась по макдональдсам
Аноним 25/10/19 Птн 16:08:55 150455540
Аноним 26/10/19 Суб 20:33:00 150548041
>>1488256 (OP)
Еще добавь https://crypto.stanford.edu/~blynn/lambda/ для желающих понять как это работает под капотом хаскель сначала транспилится Core, который суть вариант System FC, затем в Spineless Tagless G-machine, затем в C--, а дальше от выбранного бэкенда зависит (https://gitlab.haskell.org/ghc/ghc/wikis/commentary/compiler/generated-code для любопытных) .
Да и вики у GHC весьма полезна https://gitlab.haskell.org/ghc/ghc/wikis/index .
Аноним 26/10/19 Суб 20:50:22 150549942
>>1505480
Бля, чувак, неебаться ты шаришь, конечно. Мое увожение
Аноним 26/10/19 Суб 20:57:29 150551143
>>1505480
Забыл докинуть: http://babel.ls.fi.upm.es/~pablo/Papers/Notes/f-fw.pdf
для желающих понять, что же такое simply typed lambda calculus, система типов Хиндли-Милнера (на которой был основан хаскель-98) и чем это отличается от System F.
Аноним 26/10/19 Суб 20:58:59 150551644
Аноним 26/10/19 Суб 20:59:29 150551745
>>1505511
Спасибо, читану, а есть че по гомотопической теории типов?
Аноним 26/10/19 Суб 21:00:28 150551946
Аноним 27/10/19 Вск 22:00:42 150705847
Начал just for lulz вкатываться в хаскель, преимущественно из-за того, что понравился ФП подход + развитая система типов.
Вопросы такие:
1. Какие ограничения в хаскеле есть в системе типов? Есть ли то, что есть в других более развитых языках, но нет в хаскеле? Я знаю про coq, idris, agda, но не знаю, чем принципиально их система типов отличается от хаскельной, мне кажется, что в хаскеле есть всё. Что-то слышал краем уха про HoTT/Martin-Löf TT, они сейчас востребованы?
2. Обязательно ли учить теоркат? Я сейчас читаю Милевски + какие-то конспекты лекций, откопанные в НМУ. Насколько хорошо её нужно знать?

Аноним 28/10/19 Пнд 12:44:58 150727848
Аноним 28/10/19 Пнд 15:38:58 150746049
>>1507278
>https://www.youtube.com/watch?v=xcZ5yq_gG-4
Что за фигня? Смотреть не стал, по превью сделал вывод, что не отвечает на мои вопросы
>Очень сомнительная мурзилка
Очень уважаемый человек у фпшников, кмк. Не Олег Киселев, конечно, но он и не занимается особо научной деятельностью. Книжка у него тоже топ, особенно благодаря стилю повествованию и упражнениям.
Аноним 28/10/19 Пнд 17:41:53 150764150
15715330131332.jpg 28Кб, 600x600
600x600
>>1507460
>читаю Милевски
>он и не занимается особо научной деятельностью
>Книжка у него топ
>Очень уважаемый человек
Очередной свидетель Теории Типов
Аноним 29/10/19 Втр 06:30:52 150809751
Аноним 30/10/19 Срд 14:20:28 150908452
>>1508097
Системы типов в языках программирования и теории типов это две большие разницы
На практике в 99.99999% случаев второе натягивается на первое для красивой записи в бесполезной формуле
Милевски уже лет 6 ездит со своими очень интересными лекциями имея на гитхабе пару хеллоуворлдов
Аноним 31/10/19 Чтв 19:37:19 151006553
Вы реально умные тут?
Аноним 04/11/19 Пнд 09:39:15 151269254
>>1501788
Это какой-то хачкелетолстяк, не будет же человек на полном серьезе писать
>Так же, меня не интересует какая-либо портабельность, как и сишку в целом. Существует только одна ОС и одно окружение. Всё остальное - для идиотов, либо домохозяек.
Аноним 04/11/19 Пнд 09:58:16 151270255
>>1512692
> Существует только одна ОС и одно окружение. Всё остальное - для идиотов, либо домохозяек.
Но ведь это так и есть.
Аноним 04/11/19 Пнд 10:28:23 151272056
>>1512702
Двачую. Есть только Макось, все остальное для нищенок и пердолей.
Аноним 04/11/19 Пнд 11:29:00 151274757
Аноним 18/11/19 Пнд 11:20:16 152388358
1
Аноним 18/11/19 Пнд 16:03:28 152405659
>>1501788
Как эта болезнь называется?
Аноним 28/11/19 Чтв 18:12:23 153173360
>>1512720
джобс помер и мак тож недолго осталось
Аноним 01/12/19 Вск 16:58:25 153487161
Короче в пизду язык и в правду мертвая хуита для мелкоскриптов как альтеранитва питухону
Аноним 05/01/20 Вск 15:15:30 156553262
Аноним 06/01/20 Пнд 00:18:00 156592363
чото непонял

только начал изучать хаселл, такой вопрос, имена должны быть такими уёбищно мелкими и непонятными? я пришёл из нормальных языков, где наоборот принято называть переменные как можно более понятно и длинно (но не слишком, тоже перебор, ну крч баланс соблюдать), а короткие имена типа a, b, c — это ошибка новичка тип, надо нормально писать мол userId, lastNumber и т.п. а не по одной-три буквы, или аббревиатура не дай боже (ну если только всеми принятые типа GUI, TCP). ну и вот.

пример паттерна из учебника: xs@(x:y:ys)
чо это? чо за иксэс? куда, почему, игрек, игрекэс, чо это значит?

я вот например так если напишу, на проекте допустим:

firstLetter :: String -> String
firstLetter all@(first:rest) = "First letter of string " ++ all ++ " is " ++ [first] ++ " the rest is " ++ rest

меня отпиздит тимлид? если я хочу нормальные названия переменных, не принято так?

смотрю вот исходники типа энтырпрайз проектов на хаскелле и там всё такое: r вместо responce, m вместо monad, a вместо param, bs вместо byteString, а были ещё x, t и b, которые я так и не понял чо значат из кода. У вас в хаселле буквы денег стоят, почему нельзя нормально писать?

я чото непонял?

спасибо заранее, аноны
Аноним 06/01/20 Пнд 17:43:16 156633664
screenshot-www.[...].png 103Кб, 940x803
940x803
вакансия в Кадене
Аноним 06/01/20 Пнд 18:13:50 156635165
ВСЕ В КАНАДУ ПОСОНЫ!
ТАМ ВАКАНСИЯ!
Аноним 06/01/20 Пнд 22:07:51 156645566
>>1565923
> нормальных языков
Ну ты понял.

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

> тимлид
Толсто.

> энтырпрайз проектов на хаскелле
Очень толсто.
Аноним 06/01/20 Пнд 23:09:42 156649667
>>1565923
Имена длинными имеет смысл делать только в том случае, если скоуп слишком большой и все эти i, x, xs перемешаются в одну кучу говна, в которой будет невозможно разобраться. В ФП принято делить все на как можно более простые функции (сама лямбда, в которой даже функций от многих переменных нет, к этому располагает), из-за чего скоуп получается маленьким и необходимости в длинных названиях нет.
m вместо Monad используют, потому что монады в хачкеле очень часто используются. Вон в Си тоже любят писать вместо pointerPizda pPizda, потому что все и так знают, что p -- это указатель, которые в Си повсюду.
Аноним 07/01/20 Втр 12:25:12 156668068
>>1565923
Длинные имена для переменных которые что-то обозначают - userName, address итд
Для абстрактных переменных берут короткие общепринятые имена.
Ты же не жалуешься что в "нормальных языках" индекс в цикле обозначают буквой i, например?

Конкретно твой пример:
>xs@(x:y:ys)
xs - весь лист
x - первое вхождение
y - второе вхождение
ys - остатки
Просто общепринятые названия
Аноним 09/01/20 Чтв 09:04:12 156797469
Аноним 09/01/20 Чтв 09:09:09 156797570
>>1567974
Просто смотрел исходники сервера на хаскелле, но там и для не абстрактных переменных были короткие названия, типа r вместо response и чо-то ещё было. Некоторые я даже так и не понял что значат по исходнику — вроде для этого длинные названия и нужны, чтобы другой прогер (или ты через некоторое время), когда прочел этот код, понял что это значит. Ну, может, в процессе обучения поймаю "просветление" и начну понимать, не знаю, пока просто так.

Спасибо, ещё раз.
Аноним 09/01/20 Чтв 12:39:00 156803871
>>1567975
Ну тут еще может быть такой момент, что автор кода, который ты смотрел, просто сделал на отъебись.
Аноним 15/01/20 Срд 23:36:13 157383872
Аноним 19/01/20 Вск 17:58:18 157774473
>>1488256 (OP)
Может кто-нибудь ткнуть носом чего читать, чтобы заинстансить функтор к типу с рекорд-синтаксисом где в одном из полей функция лежит? Если убрать всё лишнее, то вот этот случай разобрать надо:

newtype Dvach b = Dvach { abu :: ( b -> String ) }

При этом
newtype Dvach b = Dvach { abu :: ( String -> b ) }
спокойно работает через
fmap f (Dvach pr) = Dvach ( \a -> f (pr a) )


Я уже часов 20 гугл рою, а ебучии статьи либо математику чистую сыпят, либо остоебавший уже пример "ну сейчас разберём функторы для Maybe', охуеть как вы теперь хачкель знаете".
Аноним 19/01/20 Вск 17:59:09 157774674
Аноним 20/01/20 Пнд 10:13:11 157837575
>>1577744
>"ну сейчас разберём функторы для Maybe', охуеть как вы теперь хачкель знаете"

Пиздец жиза

Мимо-учу-хачкилл-уже-год
Аноним 20/01/20 Пнд 10:31:43 157837976
Аноним 21/01/20 Втр 03:24:41 157918177
>>1578379
Спасибо, то что надо прям. Вот почему среднему статьеписателю лень сделать приписку про то что функторы есть разные и применяются по ситуации, пиздец.
Аноним 09/02/20 Вск 21:30:37 159666778
Elixir холоп итт. У нас там есть тулза mix, принято новые приложения создавать по команде mix new app_name. Эта команда запилит всю начальную хуйню: конфиги, базовый модуль, файл с зависимостями, небо, Аллаха.

Как вы в хаскелях делаете это?
Аноним 09/02/20 Вск 22:08:29 159672579
>>1596667
А в жабе есть архетипы. А в JS есть npx.

А в хаски нет нихуя, хаски слажна слажна, только факториалы можем писать в одну строчку.
Аноним 10/02/20 Пнд 10:16:03 159705080
Аноним 11/02/20 Втр 22:32:48 159869681
Тред не находи, в самом ФПшном вопрошай: А есть ли здесь юзатели Elm'а?
Аноним 12/02/20 Срд 00:13:02 159885982
>>1598696
Я прочитал намного, в нем даже тацпклассов нет. Но вообще, планирую попробовать https://reasonml.github.io/ - ocaml с реактом и поддержкоц от facebook.
Аноним 12/02/20 Срд 14:14:53 159915783
>>1598859
Там тоже тайпклассов нет.
Аноним 03/03/20 Втр 22:40:22 162238184
Screenshot20200[...].jpg 1112Кб, 1440x2863
1440x2863
Про функцию (:)
Почему она не фейлится на:
3:2:1:[] а даёт нам [3,2,1]
я так понимаю для двух скалярных сущностей она не определена:
3:2 должно фейлится
Какого хрена она тогда вместо этого начинает выполняться справа на лево?
Аноним 03/03/20 Втр 22:43:30 162238385
>>1622381
Ещё забыл спросить какой сакральный смысл в быстром препенде и медленном аппенде? В обычной жизни, я обычно что то добавляю в список в конец, а не в начало.
Аноним 03/03/20 Втр 23:23:22 162244686
>>1622381
>>1622383
Что ты за хуйню несешь?
Кто тебе еще там что-то должен?
Это обычный линкед лист
Аноним 04/03/20 Срд 00:03:26 162248387
>>1622383
Потому что никак не сделаешь аппенд за O(1)
Аноним 04/03/20 Срд 00:36:03 162251788
>>1622483
Тебе показать как сделать?
Аноним 04/03/20 Срд 00:41:05 162252389
>>1622446
Мне никто ничего не должен, я ожидаю, интуитивно, что будет такое поведение, что исполнение идёт сверху вниз, слево направо.

> Это обычный линкед лист
Ой я то думал, что вставка в такой лист в начало и конец практически бесплатна. Оказывается то вон оно как.
Аноним 04/03/20 Срд 01:13:09 162255890
image.jpg 99Кб, 1280x720
1280x720
>>1622523
Оно и идёт слева направо
Ты даже не понимаешь что ты не понимаешь
Аноним 04/03/20 Срд 03:17:17 162259091
>>1622517
Покажи. Только чтобы эта структура была перзистентной.
Аноним 04/03/20 Срд 13:00:59 162280592
>>1622523
>я ожидаю, интуитивно

хлебушек, никогда ничего не ожидай интуитивно, не изучив матчасть
Аноним 04/03/20 Срд 23:37:43 162341893
Аноним 04/03/20 Срд 23:51:26 162342694
>>1623418
Ебобо что тебе вообще не понятно?

data LinkedList a = Cons a (LinkedList a) | Nil

Cons 1 (Cons 2 (Cons 3 Nil)) == 1:2:3:[]

Тупо 3:2 эквивалентно Cons a a вместо Cons a (LinkedList a) поэтому ты мудак или хуй пойми что ты вообще спрашиваешь
Аноним 05/03/20 Чтв 01:03:11 162345595
>>1623418
>>1623418
>Есть что по существу?

книжки читай, или любые тексты с первой страницы выдачи гугла по релевантным запросам.
Аноним 05/03/20 Чтв 10:35:29 162359596
>>1623426
Ты не видишь на входе скаляр и список на выходе список?
Prelude> :t (:)
(:) :: a -> [a] -> [a]

1:2:3:[]

А если выполнять этот код не задом на перед то получится:
1:2 - скаляр и скаляр

Так вопрос почему он вдруг выполняется задом на перед?
Аноним 05/03/20 Чтв 10:46:06 162361097
Есть функция writeFile path content.
В качестве аргументов принимает String String.
Есть функция которая возвращает Doc.
Какой наиболее простой способ конвертировать Doc->String или напрямую записать Doc в файл?
Аноним 05/03/20 Чтв 10:50:57 162361898
>>1623610
Насколько понимаю по Doc имеется ввиду Text.PrettyPrint.HughesPJ
Аноним 05/03/20 Чтв 10:55:30 162362199
>>1623618
Вопрос закрыт, разобрался.
Аноним 05/03/20 Чтв 19:39:50 1624205100
Аноним 06/03/20 Птн 16:24:38 1625126101
Аноним 07/03/20 Суб 06:10:30 1625901102
>>1625126
Ты даун не умеющий ни в инфиксность ни в логику чтобы самому додуматься до нее
Впесто питушения на 10 постов со стрелянием себе в ноги хеллоуворлдом мог бы прочитать первые пару глав
Аноним 07/03/20 Суб 12:06:35 1626081103
>>1625901
Ты даун, не можешь ответить на вопрос, четкий и понятный.
Аноним 07/03/20 Суб 12:11:58 1626084104
>>1626081
Если это не жир и ты и в правду дегенерат не осиливающий линкед листы за неделю лучше выкатись
Аноним 07/03/20 Суб 18:51:54 1626484105
>>1626081
>Ты даун, не можешь ответить на вопрос, четкий и понятный.

Ну так ты спрашиваешь: "У меня после сранья зад грязен, что делать?" Ну да, чёткий и понятный вопрос. Но я не уверен, что на него обязательно отвечать.
Аноним 09/03/20 Пнд 00:32:53 1628155106
>>1507058
1. Нет зависимых типов (функции из значения в тип и зависимые пары) - погугли лямбда-куб, нет линейных/аффинных/uniqueness типов, нет сабтайпинга (ну это так-то только плюс, конечно), нет разделения между данными и коданными, нет системы эффектов, нет тотальности (всё залифчено - жди undefined)
2. Для хаскеля - нет. Если только как приятное дополнение
Аноним 09/03/20 Пнд 00:42:58 1628160107
>>1623595
блэ

1:2:3:[]
это
1:(2:(3:[]))
это
1:(2:[3])
это
1:[2,3]
это
[1,2,3]

оно же

1:(2:(3:[]))
это
(:) 1 ((:) 2 ((:) 3 []))
эквивалентно
Cons 1 (Cons 2 (Cons 3 Nil))

теперь попробуй сюда засунуть другой список в конец за константное время
Аноним 09/03/20 Пнд 02:00:55 1628195108
Аноним 09/03/20 Пнд 21:48:39 1629001109
>>1628160
Я это понимаю, мой вопрос почему он начал выполнять с конца а не с переда завалившись на 1:2
Аноним 10/03/20 Втр 01:05:53 1629133110
>>1629001
Тебе десять раз ответили
Гугли infix definition
Аноним 10/03/20 Втр 08:56:00 1629233111
С хаскелом практически не знаком, необходимости изучать нет, нужно только срочно подправить один скрипт.
Есть конструкция вида:
do
операция1
операция2
...
операцияN

Каждая из операция с большой долей вероятности генерирует исключение. Как обернуть их в нечто вроде try ... catch, каждую по отдельности?
Аноним 10/03/20 Втр 09:51:02 1629240112
>>1629233
Control.Exception.Safe
tryAny операция1
Аноним 10/03/20 Втр 13:22:56 1629371113
Аноним 11/03/20 Срд 01:10:55 1629797114
Никак не могу закончить курс на Степике. Значит ли это что я даун? Императивные языки идут стабильно средне, во всяком случае все что из императивных попадалось под руку - осваивал, но ебаный хаскел абсолютно деревянный. Где блять взять интересные задачи, которые можно было бы решать на нем? Для соревновательной проги не годен, для алгоритмов чуть сложнее сортировки ебаной он уже не гибкий бля, единственный видимый плюс среднего вкатывальщика - хуй. Их нет. Хотел назвать бесконечные структуры, которые в целом нахуй не нужны.
Был уверен что плюс функционального в том, что он проще для человека, что на нем проще изъясняться. По факту же что на нем реально можно делать? Работы нет, реальные задачи решаются проще большим другим количество инструментов.
Информатичка в школе говорила что такая хуйня нужна чтобы "мозг на место поставить". По факту (вернее с моей (низкой) колокольни) не видно задач и смысла в изучении такой хуйни. Продакшен ебал чисто функц. языки
Аноним 11/03/20 Срд 05:24:32 1629853115
>>1629797
>Никак не могу закончить курс на Степике. Значит ли это что я даун?
Курс от профессора отсебяткина из (постсовковой шараги ака мгу) ака Москвин что ли?
Не знаю, есть ли на степике какие-то доп материалы или задачи, но я смотрел первые 5 видео на ютубе и это было одно из самых бесполезных времяпрепровождений за чем-то околопрогромирования в моей жизни
>но ебаный хаскел абсолютно деревянный
Хаскель деревянный или ты? лол
Весь язык это интерфейс из монадотипов с тайпкласами и тулзов для работы с ними и io. "Учить" в общем-то и нечего
Всё остальное реализуется в абстракциях, запихнутых в эти узки рамки, и С/C++ биндах
Все либы легко читаются из сорсов
>Где блять взять интересные задачи, которые можно было бы решать на нем?
Там же, где и задачи для императивных языков
Продакшон веб мертв, но написать полноценный микросервис в <= 200 строк, который будет в разы быстрее и менее прожорливым относительно питухонов с нодами, вполне реально
Вообще ниша хаскеля сейчас в писании скриптохуйни и создание ебнутых мастермайнд динолоад систем по типу фейсбучной. Посередине огромная пропасть
>Для соревновательной проги не годен
Годен
>для алгоритмов чуть сложнее сортировки ебаной он уже не гибкий бля
Это скорее специфика всего фп
>единственный видимый плюс среднего вкатывальщика - хуй
Ну школьники-лицеисты 8+ классов осиливали, например
Хотя язык и вправду скорее для программистов, нежели вкатывальщиков
>Хотел назвать бесконечные структуры, которые в целом нахуй не нужны.
Это какая-то совсем частная хуйня. И в неё могут 99.9% фп языков, если что
>По факту же что на нем реально можно делать?
По факту что угодно
>Информатичка в школе говорила
>По факту (вернее с моей (низкой) колокольни)
>Продакшен ебал чисто функц. языки
)
Аноним 11/03/20 Срд 12:54:51 1630037116
>>1629853
> Курс от профессора отсебяткина из (постсовковой шараги ака мгу) ака Москвин что ли?
там и есть Москвин. Он же топ (или просто единственный) среди русского обуч. контента по haskel
> Хаскель деревянный или ты? лол
я конечно, лол
>>Для соревновательной проги не годен
>Годен
https://habr.com/ru/post/193722/
чувачок пишет, что разработка в принципе больше времени занимает, между такими же додиками будешь конкурировать?

Аноним 11/03/20 Срд 13:03:12 1630046117
>>1630037
Тебе хотя бы 16 есть?
Аноним 11/03/20 Срд 16:05:28 1630231118
>>1630046
будет 15 в июне бро кек ну ты рофл
Аноним 24/03/20 Втр 16:04:56 1641625119
Бампану мертвый тред. Аноны насколько реально вкатится в хуяскель, со школьной математикой ? По факту первый яп, очень сильно пугает, что типа "математический язык". Готов гуглить базовые вещи, но пройти весь вузовский курс математики, не осилю.
Аноним 24/03/20 Втр 16:42:39 1641658120
>>1641625
Вузовский курс "математики" вообще не о том (если специальность не математика) так что похуй. Вкатывайся а потом посмотришь. Если в школе математика нормально заходила то все ок должно быть.
Аноним 24/03/20 Втр 17:07:18 1641676121
>>1641625
>насколько реально вкатится в хуяскель, со школьной математикой
Можно вообще без математики, если не собираешься решать математические задачи
>типа "математический язык"
Это мем

>По факту первый яп
Язык мёртвый и оживать не собирается, если что
Аноним 07/04/20 Втр 21:40:59 1652957122
>>1629853
Ты еще забыл, что он для компиляторов годится (ну я свой на нем пишу)
Аноним 13/04/20 Пнд 16:15:25 1657090123
gogenerics.jpg 73Кб, 640x913
640x913
Котоны, теория категоний в какой-то момент щелкает в голове, как что-то осмысленное, или так и остается абстрактной хуйней в вакууме с греческими терминами, интересной только исследователям греческих терминов?
Аноним 13/04/20 Пнд 16:42:30 1657111124
>>1657090
Так и остаётся, просто становится понятнее, как это использовать, впрочем как и со всеми концепциями. "Глубинный смысл" по-прежнему будет туманным, если специально не сидеть и не читать умные и бесполезные книжки.
Аноним 13/04/20 Пнд 16:43:33 1657112125
>>1657111
>как это использовать
"это" это что?
Аноним 13/04/20 Пнд 16:45:22 1657113126
>>1657112
Конкретно в этом случае - практическую (насколько возможно) сторону теории категорий. Да и в целом ФП.
Аноним 21/04/20 Втр 22:11:12 1664047127
Не знаю куда только что делся тред Стасика про почему х-ль такой непопулярный, ведь, возможно, это мог бы быть лучший тред за последние 5 лет на этой скатившейся подмывальне.

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


>>1664023
Дизай языка конечно топовый и GHC выдаёт довольно шустрый бинарник, наверное, максимально оптимизированный из всех ФЯ, если не считать Окамл, и то идиоматичный код на окамле зачастую оказывается медленнее.
Проблема скорее не в языке и не в рантайме с компилятором, а в совершенно недоразвитой инфраструктуре, тулинге и прочих удобствах разработки, вернее их отсутствии. Второе, это отсутствие нормального онбординга для миграции разработчиков с других стеков, что в комбинации с необычным для большинства синтаксисом, и общей репутацией языка как академического, оставляет язык там, где он есть: застрявшим на уровне форсов конца нулевых.
С точки зрения менеджмента переход на хаскель весьма сомнительная затея: ООП-макакам нужно полностью переучиваться и отказываться от всего готового, то есть проебать уйму времени ради туманного повышения качества кода, которое даст какие-то выражаемые в деньгах преимущества может быть когда нибудь.
Ну и дополнительный недостаток: отлаживать и оптимизировать боттлнеки в хаскеле довольно муторно. То ли это от ленивости по умолчанию, то ли ещё из-за чего, но на том же окамле такие задачи решаются проще.
Аноним 21/04/20 Втр 22:37:18 1664068128
>>1664047
Нет, дело вовсе не в инфраструктуре. У перла вот инфраструктура была достаточно развитой, и где он? Да что там перл, руби с шарпом вон загибаются.
На популярность языка сильно влияет пиар. Пиарить заведомо переусложнённый язык ни одна корпорация не станет, это тупо невыгодно. Есть десятки новых языков, дизайн которых вполне конкурентоспособен, и если бы их пиарили, они бы давно взлетели.
А рядовые кодеры-профессионалы не станут тратить всё своё время на изучение языка, на котором они не смогут потом найти работу. Разве что for fun.
Аноним 21/04/20 Втр 23:19:41 1664111129
>>1664068
Я думаю «загибание» руби и тем более шарпа, - это фантазии.
Как человек работавший на перле, скажу что с инфраструктурой у него как раз всё было хуёво, но главная проблема была в том, что это write-only язык, годящийся скорее для всяких трюков и написания админских скриптов, чем для поддерживаемого кода.
Второе, это то что хаскель вовсе не сложен. В нём как раз всё просто и понятно, особенно если мозги ещё не забиты всякой gof-хуйнёй. Ну то есть есть конечно всякие экзотические специализированные вещи, но их знать вовсе не обязательно, хоть и может быть полезно для редких случаев.

Олсо, расскажи что это за новые конкурентоспособные языки про которые ты говоришь? Мне что-то только раст в с елмом в голову приходят.
Аноним 21/04/20 Втр 23:48:34 1664138130
>>1664047
Двачую, примерно такую же простыню написал в том треде.
Только вот это
>Второе, это отсутствие нормального онбординга для миграции разработчиков с других стеков
Это,на самом деле, первое. Хаскель предлагает разрабам освоить эзотерическую модель вычислений, которая, во-первых, вообще не похожа на привычное всем императивное программирование, которому везде учат, а во-вторых (на самом деле, как следствие) весьма нетривиально мапится на модель вычислений процессоров, то есть, на то, что "реально делает компьютер". В итоге, если ты не посвятил изучению этой эзотерики время, которого у тебя нет, то ты вообще не понимаешь, во что компилируются твои программы, даже на концептуальном уровне. В итоге имеем невозможность написания эффективного кода и оптимизации узких мест.
Аноним 22/04/20 Срд 03:52:55 1664208131
>>1664138
Плюс, как вкатывающийся добавлю: как-то совершенно экспоненциально растущая сложность происходящего, при перекате от совсем учебных вычислений факториалов и перекладывания списков из файла в файл к тем же по сути учебным примерам, но уже с логами, производительностью и сложными структурами данных.
Тут же начинают вылезать монадтрансформеры и сигнатуры с трудом влезающие в 80 символов, стопятсот расширений языка, которые сцуко расширяют (а по сути ломают, делая непонятным) синтаксис, который только выучил, произвольным образом, трюки с рекордами, линзы и прочие нихуя не элегантные способы записи того, что в сранном паскале бы записывалось в одну строчку и прочие IORef.
На этом месте, выигрыш от "чистоты и функциональности" начинает казаться не столь очевидным, а синтаксис ну вот нихуя не таким элегантным, как в учебных примерах.
Аноним 22/04/20 Срд 07:43:09 1664233132
>>1664208
>Тут же начинают вылезать монадтрансформеры и сигнатуры с трудом влезающие в 80 символов, стопятсот расширений языка
Значит ты делаешь что-то не так.
Аноним 22/04/20 Срд 08:12:33 1664237133
ого, норм
Аноним 22/04/20 Срд 17:43:14 1664733134
>>1664208
Монадтрансформеры и линзы были попыткой сделать женерик паттерн для долгосрочной поддержки %что-то нейм% а-ля абстрактный солид в мире фп
Аддоны без проблем используются в проектах на десятки тысяч строк, ничего не ломают
Мутабельные стейты и прочие IORef мне приходилось затрагивать только в тцп серверах и гуях, больше они на хуй нигде не нужны
Писать без всего вышеперечисленного можно и никто не принуждает

Что ты подразумеваешь под эзотерикой - не понимаю
Хаскель настолько хорошо оптимизируется благодаря сильным фп концептам, которые в относительно современных языках сначала были нинужны, но сейчас со скрипом неосиляторства пердолятся еле осиливая схлопывания хвостовой рекурсии в луп

мимокрокодил
Аноним 22/04/20 Срд 19:46:34 1664883135
>>1664733
>Писать без всего вышеперечисленного можно и никто не принуждает
Ты ещё скажи, что читать это никто не принуждает. Хотя логично, пока ты используешь язык для карманных петпроджектов
Аноним 22/04/20 Срд 19:55:46 1664893136
>>1664233
runWebSockets :: ConnectionOptions -> RequestHead -> (PendingConnection -> IO a) -> IO ByteString -> (ByteString -> IO ()) -> IO a
Аноним 22/04/20 Срд 19:58:51 1664896137
>>16648933
Тут всё отлично читается из типов, лол
Аноним 23/04/20 Чтв 00:48:14 1665068138
>>1664896
mapMultiRWST :: (ss ~ (HList r, HList w, HList s)) => (m (a, ss) -> m' (a', ss)) -> MultiRWST r w s m a -> MultiRWST r w s m' a'

Конечно же это всё парсится и работает. Но назовёшь ли ты такое элегантным?
Аноним 25/04/20 Суб 14:26:01 1667178139
Untitled.png 28Кб, 2202x574
2202x574
Посмотрел сравнения синтаксиса разных языков на примере одного несложного алгоритма. Взглянул на код хаскела и сразу возбудился. В одной строчке описано то, что в других языках занимает целый абзац. Это же гениально! Почему он не становится самым популярным языком?
Аноним 25/04/20 Суб 14:51:09 1667200140
>>1667178
Во первых, это хаскелевское решето эратосфена не решето эратосфена. Суть оригинального алгоритма в том, что ты проходишь сначала по каждому второму элементу, потом по каждому третьему и так далее до sqrt(n). В хаскелевском варианте же ты каждую итерацию проходишь по всем числам и убираешь те, что делятся на 2,3...sqrt(n). В результате, в хаскеле сложность O(sqrt(n)*n), а в оригинальном алгоритме O(n/2+n/3+...n/sqrt(n)).

Во вторых, самая заметная фича хаскеля - функции первого порядка для работы с коллекциями, давно есть в многих других языках, даже в джаве.
Аноним 25/04/20 Суб 14:54:18 1667203141
>>1667178
>сравнения синтаксиса
Справа два супер сахарных лист конструктора
Еще и заточенные под спорную ленивость
Аноним 25/04/20 Суб 20:49:21 1667512142
>>1667178
А потом ты пробуешь добавить в этот алгоритм логирование происходящего и рыдаешь
Аноним 25/04/20 Суб 22:05:23 1667605143
>>1667200
> В хаскелевском варианте же ты каждую итерацию проходишь по всем числам
А вот нихуя, значения мемоизируются, ленивость рулит.

>>1667203
> два супер сахарных лист конструктора
Перепишу на do-нотацию, будет на пару строчек длиннее, всё ещё лучше чем код слева.

>>1667512
> А потом ты пробуешь добавить в этот алгоритм логирование происходящего и рыдаешь
Добавляю Writer монад и хули ты мне сделаешь?
Аноним 25/04/20 Суб 22:35:52 1667626144
>>1667605
>супер сахарных
>перепишу в очень сахарную
лол
Аноним 25/04/20 Суб 23:16:40 1667665145
>>1667626
Может тебе в go тред? У них там максимально без сахара всё.
Аноним 27/04/20 Пнд 00:58:04 1668580146
>>1667605
> А вот нихуя, значения мемоизируются
Ты обосрался, школяр. В данном случае никакой волшебной мемоизации не случится
Аноним 27/04/20 Пнд 10:28:03 1668774147
>>1667178
лол нуфани открывают для себя трал-потенциал гаскиля в 2020 нахуй
Аноним 28/04/20 Втр 21:32:08 1670859148
Хуервбадасскель
Аноним 01/05/20 Птн 03:26:58 1673288149
Мертвый тред мертвого языка.
Аноним 08/05/20 Птн 15:49:17 1680880150
let ведь не имеет смысла без in? Почему в книгах в примерах я вижу такое использование?
Аноним 08/05/20 Птн 15:54:27 1680883151
>>1680880
В выражении - не имеет. В объявлении - определяет новое имя с указанным значением, и к нему можно будет обращаться из других определений.
Аноним 08/05/20 Птн 21:40:56 1681541152
>>1680880
В do нотации in не нужен
Аноним 10/05/20 Вск 02:23:12 1682750153
>>1488256 (OP)
Стоит признать, что хоть что-то полезное написано на Haskell

>A smarter Dockerfile linter that helps you build best practice Docker images.
https://github.com/hadolint/hadolint

мимо-рубист
Аноним 10/05/20 Вск 10:17:22 1682874154
йоба.jpg 61Кб, 512x512
512x512
>>1488256 (OP)
Обмажутся своими монадами и дрочат.
Аноним 12/05/20 Втр 06:29:52 1684666155
>>1682874
Уж лучше монадами, чем темплейтами напополам с байтоёбством.
Аноним 12/05/20 Втр 11:50:35 1684837156
>>1684666
Соглы, именно поэтому я за пхп и жс, где ничего из этого нет.
Аноним 13/05/20 Срд 20:58:49 1687146157
>>1684666
>Дампишь всё от stg до asm, пытаешься разобраться, почему вся куча засрана санками, начинаешь написание своей либы с GHC.Prim но это не байтоёбство, это другое.
>Обмазываешься тайпклассами в перемешку с singletons и th, {-# LANGUAGE CPP #-} в каждом втором модуле, но не, это не темплейты вообще ни разу.
Аноним 13/05/20 Срд 21:16:55 1687156158
>>1687146
Тем, кто пишет хеллоуворлды и с этим не сталкивается, не понять. Они максимум пару функций и data T = T Int могут.
Аноним 13/05/20 Срд 21:48:12 1687187159
Чем хаскель лучше эрланга\схемки?
Аноним 14/05/20 Чтв 09:34:43 1687392160
>>1687187
Haskell: типобезопасность, чистота, программирование на тайплевеле, ленивость, каррирование по умолчанию, выразительная система типов и конструкции языка, высокая производительность по сравнению с остальными ФЯ.

Эрланг: фунциональный бейсик с процессами.
Схема: игрушечное скобочное петушение для обучения студентов.
Аноним 14/05/20 Чтв 09:38:35 1687394161
>>1684666
Хаскельские темплейты заебись кстати, но почти нигде не нужны. В популярных либах почти не используются.

>>1687146
Ты занимаешься какой-то хуйнёй. Просто используй Haskell.

>>1687156
Это всё ещё лучше, чем долбоёбы, взявшие хаскель, но так и оставшиеся императивными дегенератами. Только от таких слышу про стеки монад-трансформеров и так далее.
Аноним 14/05/20 Чтв 09:56:46 1687396162
>>1687394
> Хаскельские темплейты заебись кстати, но почти нигде не нужны. В популярных либах почти не используются.
А как же линзы?
алсо, юзал либу для строчковой интерполяции
Аноним 14/05/20 Чтв 19:57:09 1688283163
>>1687187
Чистотой и строгой типизацией. И нет, он этим не лучше, у него это просто есть и сделано охуенно. Но если тебе это не нужно, понятное дело, он ничем не лучше.

>>1687394
>Хаскельские темплейты заебись кстати
Мальчик, ты пизданулся, TH меняется почти в каждой версии компилятора, заебёшься поддерживать. Уж лучше генерики (хотя они тоже крайне перегружены и мозголомны, хорошо, что добрые люди запилили generics-sop, этим уже можно пользоваться)

>Ты занимаешься какой-то хуйнёй.
Этой хуйнёй занимаются почти все авторы либ на Хаскелле, которые претендуют на продакшн. И поверь мне, даже если ты не видишь там откровенного байтоёбства, там будет: "Ехал инлайн через специалайз, видит инлайн в специалайзе реврайт-рул, сунул инлайн в реврайт-рул контроль фазы, STG-to-STG, STG-to-STG и снова контроль фазы." И всё это, кста, подбирается ручками путём долгих игр с бенчами и профайлерами хотя они там, самые лучшие по моим субъективным ощущениям, мне часто пиздят про тулинг, но всякие там бенчи и профайлеры в Хаскеле - заебись. Тесты тоже очень даже. И довольно ломучее - очень похожий код может либо в простейший цикл на асме развернуться, либо в ёбаное говно, которое будет насиловать мусоросборник.

В защиту Хацкеля могу сказать только то, что из него действительно можно выжать впечатляющую производительность, при этом показывая на уровне интерфейса либы только очень высокие абстракции. Такое в принципе невозможно на уровне недофункциональных суржиков вроде Скалы. Но чтобы это сделать, надо изрядно поебаться. Если хочешь написать очень красивую либу, бери Хаскель. Если надо тупо что-то закодить под конкретную задачу, попрыгай жопой на клавиатуре на С, или поебись с мудаёбской но огромной дажва-кодобазой, будет не так красиво, но быстрее.
Аноним 14/05/20 Чтв 20:02:25 1688298164
Короч, Хацкель - он ради искусства. Подрочить на него, заценить как всё круто сделано, поплеваться, почему в моём языке авторы-долбоёбы изначально не сделали как в Хацкеле. Но вот практические задачи как правило решаются быстрее на других языках.
Аноним 14/05/20 Чтв 20:10:32 1688310165
>>1688283
>В защиту Хацкеля могу сказать только то, что из него действительно можно выжать впечатляющую производительность, при этом показывая на уровне интерфейса либы только очень высокие абстракции.
Ну какой нибудь tensorflow тоже, не то чтобы сильно замедляется питоновым интерфейсом с максимально хайлевелными конструкциями. Просто потому что снизу крутятся плюсы. Это, прямо скажем, хуёвый аргумент.
Аноним 15/05/20 Птн 00:02:56 1688561166
>>1688310
Ну это не то. TF - удобная прослойка между скриптом и С++. А хацель как бы изначально позволяет констуировать интерфейсы. Я как бы щась сольюсь, но в хацкеле есть возможность построить крутую либу, a в говноскриптах такой возможности практически нет.
Аноним 20/05/20 Срд 11:59:30 1694864167
image.jpg 22Кб, 600x600
600x600
Я всё думал почему все пишут именно про монады похоже большинство не понимает что такое тайпклассы и зачем они нужны
Аноним 20/05/20 Срд 16:04:54 1695205168
>>1694864
Больше удивляют люди, которые хотят формошлепства на монадах.
Аноним 20/05/20 Срд 16:14:35 1695215169
>>1695205
Ты же не понимаешь, что такое монады?
Аноним 20/05/20 Срд 16:57:07 1695262170
>>1695215
Здесь запятая перед что не нужна.
>Что такое монады
Не особо.
Аноним 20/05/20 Срд 17:32:20 1695293171
>>1488256 (OP)
Знаю компанию которая использует в вебе хаскел на бекенде.

В чем его преимущество перед джавой или пхп для бекенда?
Аноним 20/05/20 Срд 17:47:50 1695320172
>>1695293
не приходится работать с джаво- и пыходебилами.
Аноним 20/05/20 Срд 18:53:05 1695418173
>>1695293
Гринтреды и супервысокоуровневые либы, сервис на которых можно написать в <200 строк. Правда, это есть практически во всех мейнстрим ФП языках

Хаскель мог бы быть бай дизайн быстрее практически всех мейнстрим ФП языков, но всё давно скатилось в тонны неведомого непрофилируемого спагетти
Хаскельная типизация проёбывает "иммуность к легасиванью" кода и начинает стрелять в ноги при малейшем изменении основ библиотеки
Хаскельная ленивость на хуй не нужна и в реальном мире выстрел в ногу по умолчанию

Хаскель - обычная абстрактная цпп биндилка с гц, только перечень фишек достаточно своебразный и, как показала практика, всратый
Хаскель мёртв для серьезного веба, автор самого популярного шеб фреймворка давно перекатывается на раст

Аноним 20/05/20 Срд 20:13:04 1695481174
>>1695418
>Гринтреды и супервысокоуровневые либы, сервис на которых можно написать в <200 строк
Гофер, ты?
Аноним 20/05/20 Срд 20:26:33 1695499175
Аноним 20/05/20 Срд 20:33:52 1695502176
Аноним 20/05/20 Срд 20:42:31 1695506177
Аноним 21/05/20 Чтв 14:39:50 1696262178
>>1695320
Верно. Ведь на хаскелл нет работы, а это значит, что ты не будешь пересекаться с людьми, которые зарабатывают деньги программированием.
Аноним 21/05/20 Чтв 17:46:08 1696518179
>>1696262
>успешный сидит на дваче днём
Аноним 22/05/20 Птн 10:15:21 1697321180
Хаскелл норм как первый язык программирования? Хочу настраивать Xmonad
Аноним 22/05/20 Птн 12:06:53 1697481181
>>1697321
>Хаскелл норм как первый язык программирования?
Как первый функциональный язык программирования норм, наилучший выбор. Но никогда не встречал того, для кого ФЯП был первым. хотя только что нагуглил и нашел это https://mmhaskell.com/blog/2018/6/4/bxit5i954uafn0n4gah3yrzcxnc3q6 Можешь стать первопроходцем, напиши потом через пол года результаты.

Теоретически, хаскель научит избегать тебя многих джуновских ошибок, но с другой стороны, вдруг тебе будет сложно перестроиться с фп на императивщину?

> Хочу настраивать Xmonad
DT насмотрелся? Для базовой настройки хаскель знать не нужно, достаточно читать документацию и копипастить код с инета.
Аноним 22/05/20 Птн 12:56:04 1697556182
>>1697481
>никогда не встречал того, для кого ФЯП был первым
SICP-вкатывальщики же, нет?
>Можешь стать первопроходцем
Заманчивая идея, тогда стану.
>DT насмотрелся?
Нет, у него скучные ролики по 10 минут, мне такое не нравится, да и если бы мне было настолько важно мнение кого-то в интернете я бы пересел на dwm, насмотревшись Люка Смита.
Аноним 23/05/20 Суб 03:18:21 1698601183
image.png 206Кб, 604x401
604x401
>>1488256 (OP)
почему мне логотип эту хуйню напоминает?
Аноним 23/05/20 Суб 12:05:01 1698738184
Аноним 26/05/20 Втр 13:58:16 1702978185
1590483400273.jpg 21Кб, 474x266
474x266
Стоит вкатываться? Или это проект просто чтобы разработчики других языков переняли из него хорошие вещи?
Аноним 26/05/20 Втр 14:05:04 1702998186
>>1702978
Какое нах вкатывание, вакансий же нет.
Аноним 26/05/20 Втр 14:17:44 1703033187
>>1702978
Уже всё и переняли.
Аноним 26/05/20 Втр 16:09:44 1703220188
Сап двач, нихуя не понимаю.
Вот есть в прелюде функция words, которая получает строку и возвращает список из слов, разделенных пробелами.
https://pastebin.com/FYnEnx1r
И я совсем не понимаю, почему эта ебанина работает.
Откуда тут s' и нахуя? Нигде не объявляется, но почему-то работает.
Если удалить ' и оставить просто s, то функция будет работать так же.
Вот допустим передается строка, начинающаяся с пробела " a", s = " a".
dropWhile Char.isSpace s в кейсе отбрасывает пробел и получается
case "a" of
"a" сравнивается с пустой строкой, ничего не происходит. "a" сравнивается с s' которая, вроде бы, не отличается от s и почему-то условие выполняется. Если считать, что s и s' одно и то же, то получается s = " a" = "a" и бред какой-то ебаный s не s помогите нихуя не понимаю.
Далее через break вычисляются w и s'', которые должны быть равны "" и " a" соответственно, внутри вызывается words s'' и получается бесконечная рекурсия.

Так как функция все-таки работает, получается, что хуй знает откуда взявшаяся s' которую можно безболезненно поменять в коде на s каким-то образом принимает значение строки с уже отброшенным пробелом. words1, где я дописал строчку с объявлением s' работает так же. То есть, как я понял, это где-то как-то неявно почему-то происходит.
И это все равно не объясняет, почему функция работает, если s' в коде заменить на s. Ведь функции не меняют значения, и s как было " a", так и осталось.
Надеюсь, что кто-нибудь сможет разобрать мою шизофрению.

Аноним 30/05/20 Суб 22:07:04 1708629189
Разве каррирование и перегрузка функций не одно и то же? Позволяет достичь тех же результатов, только в случае перегрузки вызов не будет выглядеть так по уродски
Аноним 30/05/20 Суб 22:36:51 1708660190
>>1708629
Нет, вообще разные вещи.
Аноним 30/05/20 Суб 22:41:17 1708665191
>>1708660
Ну вот зачем мне писать
f(a)(b), если я могу сделать перегрузку

f(a)
f(a,b)?

Возможно теоретически всё не так, но задача то одинаковая
Аноним 30/05/20 Суб 22:42:57 1708667192
>>1708660
Ну вот зачем мне писать
f(a)(b)
f(a)
, если я могу сделать перегрузку

f(a)
f(a,b)?

Возможно теоретически всё не так, но задача то одинаковая
Аноним 03/06/20 Срд 02:09:39 1711540193
>>1708629
Каррирование это преобразование из `(a, b) -> c` в `a -> b -> c`.
Перегрузка это одновременное назначение оного имени двум и более разным значениям, диспетчеризуемым статически либо динамически.
Что тут общего?
Аноним 07/06/20 Вск 08:53:03 1715430194
Как в тайпклассах решена проблема ромба?
Почему сделали классы, а не множества, например?
Аноним 07/06/20 Вск 10:54:02 1715461195
>>1715430
Ни один из твоих вопросов не имеет никакого смысла. Просто, блять, набор слов.
Что спросить-то хотел?
Аноним 09/06/20 Втр 08:22:19 1717306196
1. Я знаю игры есть на хаскеле, но как они реализованы? У нас же не может быть мутабельных объектов, как тогда изменение состояния во времени происходит?
2. Можно ли написать на хаскеле менеджер памяти, для какого нибудь интерпретатора?
Аноним 09/06/20 Втр 11:49:57 1717418197
Аноним 09/06/20 Втр 22:52:58 1718124198
>>1715430
Нет такой проблемы, т.к. наследование отсутствует.
Множества чего? Типов? Классы типов это и предикаты на типах, и функции из типов в кортежи значений.
Аноним 09/06/20 Втр 23:01:15 1718126199
>>1717306
1. Пишешь функцию State -> State, рекурсивно ее вызываешь, вот тебе и геймлуп. Или в чем вопрос был?
Аноним 10/06/20 Срд 19:01:41 1718838200
image.png 2Кб, 499x111
499x111
>>1622381
Потому что она наверное право-ассоциативна?
Ну-ка дай проверю.

И правда.
А у тебя импертивное мышление не изжито, что-то там "выполняется". Пока не заборешь эту херню - так и будешь не понимать.
Аноним 10/06/20 Срд 23:40:28 1719024201
>>1711540
У тебя цель, вызвать Х с одним или двумя аргументами

ТЫ это делаешь либо через перегрузку либо через каррирование, где

X(a,b) эквивалентно X(a)(b)
И X(a) экв. X(a)

Ну вот одно и то же блядь, не важно как оно устроенно внутри
Аноним 11/06/20 Чтв 01:46:02 1719081202
>>1718838
Офигеть на мой простой вопрос дали ответ, спасибо. Вместо всякого говна, четкий и понятный ответ. И то забрел сюда снова случайно.
>>1717306-кун
Аноним 11/06/20 Чтв 09:56:36 1719153203
>>1719081
Обращайся.
Точнее даже не обращайся, а можно вместе что-то обсудить, я тоже только еще учу hs, причем не торопясь, пока полностью тему не пойму - дальше не двигаюсь, потому смог дать разумное суждение по твоему вопросу.
Аноним 12/06/20 Птн 17:02:28 1720528204
>>1719024
> цель
>>1708665
> задача

Это не задача и не цель, а хуйня из под коня. Что в итоге должно быть вычислено?

X(a,b) ≅ X'(a)(b)
но X'(a) ≅ \b' -> X(a,b')
X(a) это вообще другое
Аноним 13/06/20 Суб 19:53:59 1721770205
>>1718838
Сектанты "изживают" императивное мышление, спешите видеть.
Аноним 14/06/20 Вск 23:16:23 1723107206
>>1719024
Это совершенно разные вещи. Это не вопрос того, как оно устроенно, а что это вообще значит. Почитай сначала подробнее, что такое перегрузка методов и каррирование, а потом уже задавай адекватные вопросы.
Аноним 15/06/20 Пнд 17:11:41 1723859207
>>1721770
Если хочешь программировать на слегка посахаренном лямбда-исчислении - будь добр изжить императивное мышление.

Если не хочешь, то хуле сюда залез?
Аноним 16/06/20 Втр 02:44:03 1724329208
>>1723859
> Если хочешь программировать на слегка посахаренном лямбда-исчислении - будь добр изжить императивное мышление.
> Если хочешь говорить по-китайски, будь добр изжить мышление на русском.
> Если хочешь ездить на скейте, будь добр изжить бипедальное перемещение.

Ты совсем сектант-долбоёб, или просто туповат и не можешь в разные навыки?
Аноним 22/06/20 Пнд 11:50:43 1730410209
>>1488256 (OP)
Подскажите как написать вычисление фибоначи в лямбде в 1 строку. Что-то вроде такого \ = let fib :: Num -> Num in ...
Аноним 22/06/20 Пнд 11:53:07 1730413210
image.png 33Кб, 617x484
617x484
>>1730410
Я просто в этой штуке сейчас играюсь
Аноним 23/06/20 Втр 01:27:53 1731062211
>>1730410
ну это просто, держи:
fix$join(.)(1:).uncurry(zipWith (+)).(id&&&tail)
Аноним 23/06/20 Втр 12:55:06 1731357212
Аноним 23/06/20 Втр 19:27:38 1731968213
Аноним 23/06/20 Втр 19:28:02 1731969214
>>1731968
а, я тупой, лол, только заметил, что фиббоначи
Аноним 23/06/20 Втр 23:35:01 1732225215
Язык для написания факториалов и фибоначчи в одну строчку.
Аноним 24/06/20 Срд 12:21:43 1732432216
>>1732225
В одну строчку только нюбы пишут.
Красивый факториал строчек 50, а байтоёбский строчек 8, не считая импортов.
Аноним 24/06/20 Срд 12:21:48 1732433217
>>1732225
int f0=0, f1=1, c=n/2; while (c--) f0+=f1, f1+=f0; return n%2 ? f1 : f0;
Где-то на позицию мог ошибиться, но похуй.
Аноним 24/06/20 Срд 13:14:56 1732475218
>>1732433
Сразу видно, что только хаскелль идеально подходит для это задачи, а на остальных выглядит так себе.
Аноним 26/07/20 Вск 19:15:43 1760943219
Начал тут почитывать learnyouahaskell на досуге, ибо шишка дымится на синтаксис этого вашего хаскелля. Но вот неприятный нюанс, зашел на hh.ru глянуть вакансии, а их там всего 10 штук, да и 9 из них не по хаскелю вовсе. Немного удручает тот факт, что в рашке хаскель нахуй никому не нужен, кроме джетбрейнса и перспективы найти на нём работу околонулевые.
Аноним 26/07/20 Вск 19:17:08 1760944220
>>1760943
Алсо, далеко за примерами ходить не надо, даже в закрепе ссылка на архивный тред вместо актуального.
Аноним 27/07/20 Пнд 16:17:54 1761582221
>>1760943
>хаскель
>работа
Это язык для аристократов, а не для РАБотяг.
Аноним 30/07/20 Чтв 22:18:48 1764608222
>>1702978
Не стоит, потому что потом будет тошнить от кривости других языков, а на Хаскеле ты себе работу не найдёшь.
Аноним 31/07/20 Птн 06:21:05 1764718223
>>1760943
Хаскель проще пыхи
Аноним 01/08/20 Суб 20:52:56 1765853224
>>1764608
А потом ты смотришь, как и хаскелле выглядит то, что в норме записываться как record.subrecord.fieldname = Newvalue и плачешь
Аноним 01/08/20 Суб 22:19:30 1765902225
>>1765853
А выглядит оно как
>record.subRecord.fieldname .~ Newvalue
Чего плакать?
Аноним 01/08/20 Суб 22:23:39 1765906226
>>1765853
>не может в линзы
>кукарекает

Мань, почти в любом ФЯ есть синтаксис для апдейта нестед структур, кого ты затролить решил?
Аноним 01/08/20 Суб 22:42:47 1765918227
>>1765906
> иметь специальные либы чтобы работать со вложенными структурами
> кукарекать про лаконичный и изящный язык
Маня, ты вообще понимаешь, что ты несёшь?
Аноним 01/08/20 Суб 22:44:54 1765921228
>>1765918
Нахуя добавлять сахарок к тому, что может сделать либапри чем в многих случаях лучше? Ты б еще б поныл, что в хаскеле async/await нет.
Аноним 01/08/20 Суб 22:50:00 1765922229
>>1765921
Да в нём так-то дохуя чего нет. Но зато факториал и фибоначчи изящные, тут не поспоришь
Аноним 01/08/20 Суб 23:00:46 1765926230
Аноним 01/08/20 Суб 23:09:35 1765930231
>>1765926
> среньк
А вот мы и скатились до уровня ФП.
Аноним 01/08/20 Суб 23:14:39 1765934232
>>1765918
Все по банальному сценарию: залетную императивную маню обоссали, и она, утирая слезки, дрожащим голосом вскукарекивает "А вот мы и скатились до уровня ФП.". Маня, мы проходили это сотни раз: ты еще некоторое будешь кукарекать и зашивать свой пукан, омываемый тугими струями элитной мочи и захлебываясь ею. При этом конечно же будешь думать, что всех искрометно затролел, отвечая бранью, и даже когда тебе укажут на этот факт, то вспомнишь свой статус вконтакте "никогда не здавайся)))" и продолжишь по инерции сглатывать уринку. Так что окропляю твой ротешник и рекомендую свалить отсюда.
Аноним 01/08/20 Суб 23:31:23 1765939233
>>1765934
Но ведь на брань скатился фп-школьник
Аноним 01/08/20 Суб 23:32:40 1765941234
>>1765939
>>1765930
Всё ведь просто, тебя никто не трогал, ты сам пришёл и начал вонять "а вот в хаскили нельзя как в моей мутабельной дрисне". После того как тебе ответили как это делается и без деструктивных апдейтов, ты начал недовольно кукарекать.
Ты же нихуя не понимаешь что за линзы, призмы, какие Lens вообще решает задачи, до решения которых твоей мейнстримовой параше ещё лет 20 в говне плыть и плыть, но при этом кукарекаешь что в хаскеле чего-то там нет, не указывая при этом чего.
Аноним 01/08/20 Суб 23:37:30 1765943235
>>1765941
Знаете, что самое забавное? Что серьёзные люди, пишущие ФП в прод, прекрасно осведомлены о трейдоффах и проблемах того же Хаскелля. И только ФП-школотроны агрятся на "мутабельную дрисню" и "мейнстрим парашу", как лакмусовая бумажка, ей богу
Аноним 02/08/20 Вск 16:03:20 1766304236
>>1765943
Серьёзные люди знают что мутабельная дрисня - это один сплошной дравбек и чем её меньше - тем лучше. И только долбоёбы ходят по всему разделу кукарекая что мир императивен.
Аноним 02/08/20 Вск 20:37:43 1766611237
>>1766304
Вот ещё один пример школьника с чёрно-белой картиной мира и фанатизмом неофита в межушном ганглии
Аноним 04/08/20 Втр 00:28:27 1767819238
Аноним 04/08/20 Втр 01:24:13 1767845239
IMG202008040123[...].jpg 119Кб, 1080x1097
1080x1097
Аноним 05/08/20 Срд 20:54:48 1769376240
>>1767819
>такое
Оопшные самоотсосы?
>решается
В чём вообще задача?
Аноним 12/08/20 Срд 02:51:38 1774809241
Как же блядь заебали type mistake. Нет, КАК ЖЕ ОНИ БЛЯДЬ ЗАЕБАЛИ. Это просто невыносимо. Я начинаю жалеть скаченных 200Мб. А еще я начал сомневаться в скорости хаскелля. Быстрая вещь 200Мб весить не будет.
Аноним 12/08/20 Срд 10:24:03 1774903242
>>1774809
Так стронг тайпинг фп никогда - нигде не использовавшееся говно без задач, toy language статус хаскеля после стольки лет пердолинга - лишнее тому подтверждение
Какое-нибудь ужасное идиоматическое кручение нила в лиспе на практике покрывает гору хаскельных велосипедов и свистоперделок к ним
>начал сомневаться в скорости хаскелля
Хаскельный перформанс - неведомая непрофилируемая хуйня
Весь теоретический потенциал агрессивных оптимизаций на практике срёт в штаны, особенно из-за войны с ленивостью
ФБ для своего спам фильтра пришлось фиксить и допиливать компилятор, например
Шеб за пределами чат ботов и хелоу ворлд рест эндпоинтов просто мёртв, хоть и выглядит как красивый дсл в 50 строк
Аноним 12/08/20 Срд 13:42:14 1775040243
>>1774809
> Как же блядь заебали type mistake. Нет, КАК ЖЕ ОНИ БЛЯДЬ ЗАЕБАЛИ.
Ну да, лучше ебаться с теми же ошибками, но в рантайме. А потом еще сотню юнит тестов писать, потому что ТИПЫ ЕТО ПЛОХА, СКОМПИЛИРОВАТЬ МОЙ ХУЕВЫЙ КОД НЕ ДАЮТ
> Быстрая вещь 200Мб весить не будет.
А что в хаскеле 200мб весит? Да, у него статическая линковка, но даже йобы с тонной зависимостей типа пандока весят мегабайт 100, а твой хелловорлд и десятка весить не будет.
Аноним 13/08/20 Чтв 10:27:54 1775804244
>>1774903
Хаскель - это язык для интеллектуальной элиты. Им на нём писать очень удобно. А у обычного быдлокодера от всех этих монад мозг вспухнет. Поэтому элита пишет на хаскеле, а быдлокодеры и школота - на дельфи и си плюс плюс.
Аноним 13/08/20 Чтв 13:31:47 1775954245
>>1775040
> Ну да, лучше ебаться с теми же ошибками, но в рантайме
Нет никаких ошибок. Проверка типа по значению, оно же утиная типизация.
Аноним 13/08/20 Чтв 23:42:36 1776666246
>>1765853
Во-первых есть линзы, во-вторых, глубокое заглядывание в структуры - это code smells в любом языке, в-третьих если ты после Сишарпа или на чем ты там кодишь напишешь на какой-нибудь Джаве frame.getLocation().x = newValue, то ты тоже будешь плакать. Линзы по крайней мере обладают вполне определённым поведением, а не зависят от реализации геттеров/сеттеров, которые можно написать разными способами, при этом все способы будут немного неправильные, просто неправильные по-своему.
>>1765918
Возможность написать линзы средствами самого языка наоборот свидетельство гибкости и выразительности языка. На языках уровня Джавы линзы написать просто невозможно. На Скале более-менее рабочие линзы можно получить только обмазавшись макросами с ног до головы. На Хсакеле при желании линзу можно сделать вообще не подключая библиотеку с линзами, потому что линза это тупо функция вида forall f. Functor f => (a -> f b) -> s -> f t.
>>1765922
Мне кажется ты ничего не знаешь про Хаскель, потому что в нём как раз гораздо больше всего, чем во среднестатистическом языке. Поэтому и порог вхождения выше. А про факториалы - это фольклор среди публики, которая как раз дальше факториалов язык не освоила.
>>1765943
Самое забавное, что трейдоффы - это вовсе не отсутствие деструктивных апдейтов а теперь набери воздуха: они там есть, а самый простой способ определить мамкиного троля, который ничего не знает про язык, это как раз доёбывание до воображаемых проблем и неспособность указать на реальные.
>>1774809
Тебе в Питон. Там даже пропущенная запятая при перечислении элементов массива ошибкой не является. Зато какая хуйня на выходе получается, любо-дорого смотреть.
>>1774903
>особенно из-за войны с ленивостью
Опять мимо кассы. Мамкины тролли не знают, что ленивость уже лет 10 не является основным источником проблем производительности. Впрочем лисперы застряли годах в 80-х, тогда Хаскеля вообще не было, меня удивляет сам факт, что скобкоёбы откуда-то знают про его существование.
Аноним 14/08/20 Птн 02:10:45 1776753247
>>1776666
А сколько всего можно самому средствами языка на лиспе наваять! Вообще идеальный язык )
Аноним 14/08/20 Птн 02:32:01 1776760248
>>1664208
В хаскеле довольно сложная система типов, по сравнению с хаскелем какая-нибудь схемка кажется детской игрушкой.

Чистота на самом деле круто, но только если ты осознаёшь что рантайм по сути вызывает большую чистую функцию, чтобы понять что ему насайдэффектить дальше. В результате получается тотальная тестируемость и предсказуемость всего твоего кода.

А вот паттерны пожалуй соглашусь, сыроваты. Не разжевали ещё достаточно хаскель на книги с бест практиками.
Аноним 14/08/20 Птн 02:35:05 1776762249
Screenshot from[...].png 13Кб, 246x186
246x186
>>1776666
> Тебе в Питон. Там даже пропущенная запятая

Хоть и квадрипл, но попахивает пиздежом.
Аноним 14/08/20 Птн 02:41:38 1776767250
>>1776666
Ну так, расскажи, если не тролль и не фанбой -- какие же недостатки языка не позволили за десять лет с последнего стандарта умных хаскеллистам захватить индустрию?
Аноним 14/08/20 Птн 05:36:03 1776786251
>>1776762
> попахивает пиздежом
Он вот про такое:
arr = [
"one",
"two"
"three",
"four",
]
print(arr)
Аноним 14/08/20 Птн 10:30:34 1776889252
>>1776786
Ну так пусть называет вещи своими именами, не пропущенная запятая в массиве, а конкатенация строк без оператора. Если там вместо one two three будут большие куски текста, "баг" превращается в фичу.
Аноним 14/08/20 Птн 12:26:46 1777019253
Решил поучить хаскелл, мало того что stack с cabal какая-то хуйня. Так я поставил ghcup, чтобы поставить разные версии ghc, так у меня теперь xmonad собираться не хочет, потому что мол ghc-pkg считает, что те что в юзере у меня либы это мол глобальные, пытаюсь поменять путь к глобальным либам и скорее всего я тупой нихуя не меняется он сука, проще в юзер папку блятб скопировать.
Мне кажется проще вообще всю эту хуйню заново переставить...
Аноним 14/08/20 Птн 18:07:09 1777501254
>>1776760
>>1776666
Проблема ленивости не в перформансе
Темплейты и линзы - попытка дать возможность лёгкого шлёпанья говна, по итогу выстрелившая лишний раз в ногу
В хаскеле максимально примитивная система типов
Твои макаковысеры унылы и тупы

Хаскел просто концептуально провалившееся говно
Аноним 14/08/20 Птн 19:25:16 1777568255
>>1777501
>БА-БАХ
Очередной разрыв императивного быдла.
Аноним 14/08/20 Птн 19:27:13 1777571256
>>1777568
Я пишу на хаскеле
Ты серишь своими маняпредставлениями
Аноним 14/08/20 Птн 20:09:17 1777611257
>>1777571
Можно ли написать инстанс функтора для эндоморфизма?
Аноним 15/08/20 Суб 01:29:53 1777801258
>>1664047
Его модер снёс как ты меня вычислил, засранец? На счет тулинга не согласен. В Хаскеле охуенный тулинг. На Скале попиши, чтобы понять, что такое хуёвый тулинг. И даже не пробуй использовать Criterion, QuickCheck, HUnit, weigh, не используй Stack и даже GHCi не вздумай запускать. Не дай Б-г привыкнешь, потом будешь кровавыми слезами плакать от скалийных эрзацев. Ну если совсем хочешь побыть "нижним" в IT-BDSM-играх, примени к Скале java-тулинг. Например, мавеном проекты пособирай или jmh поюзай для Скалки.

На счет оптимизации - согласен. Проблема хаскелевского перформанса в непредсказуемости. На eager-функциональных говнах программа тормозит всегда (и не знаю, что за перформанс ты нашел в ОКамле, может ты его просто лучше знаешь и обходишь ловушки, как те деятели на Питоне, которые удивлены "медленным" IO в Хаскеле, когда вызывают getLine в Хаскеле и, о чудо, Питон оказывается быстрее). Но добавление пары строк в eager-мешанину перформанс почти никогда фундаментально не роняет, а в Хаскеле регрессию можно словить внезапно. Для бизнеса это хуёво. Лучше, когда у тебя 10 серверов, но ты знаешь, что это точно будет работать, типа привык уже и всё рассчитал, чем когда у тебя один сервер, но внезапно наебнулась какая-то оптимизация и код стал работать в 8 раз медленнее все равно быстрее, чем на eager, но ты же не ожидал такой подставы, у тебя даже планах не заложена покупка дополнительного железа на какой-то минорный апдейт

Оптимизация Хаскеля - это как-то, блядь, вот так: https://stackoverflow.com/questions/45334985/when-to-use-cps-vs-codensity-vs-reflection-without-remorse-in-haskell Попробуй 3 способа, может быть один из них окажется в 8 раз быстрее остальных, а может быть все 3 - одинаковые. Это реально заябывает, я не хочу писать 3 варианта своей библиотеки чисто ради того, чтобы проверить, какая из них быстрее. Иногда да, хочется тупо на сишке писать, а не копаться в ассемблерных дампах и разбираться почему у компилятора крышу снесло при чисто декоративных изменениях.

>>1664138
Согласен. Вот тут чувак на 10:25 эту тему пиздит https://www.youtube.com/watch?v=QyJZzq0v7Z4

>>1776767V
Хорошее сложнее сделать, чем плохое. Про реальные недостатки сможешь прочитать в рассылках, они там постоянно обсуждаются.

>>1776753
Я Лиспом не владею и ничего про него сказать не могу. Но отсутсвие пейперов как-бы намекает, что не всё так охуенно в Датском королевстве.

>>1776760
>В хаскеле довольно сложная система типов
Мне тут пиздели, что синтаксис обновленного Паскаля умещается на одну страницу. Интересно, тайпчекер Хаскеля уместится на одну страницу? Что-то подсказывает, что да, хотя я не проверял.

>>1776889
Я такую фичу автоматизировал и выводил в продакшн. Самое смешное, что она, сука, во-вторых, работала, а во-первых, была согласована с безопасниками и её ни в коем случае нельзя было менять.

Питоноёбы доставляют, как ни крути. Питон - это язык для ML-дегенератов. Хорошо, что ML нивелирует дегенератизм отдельных личностей. Ну как-бы есть долбоёбы от IT, но у них охуенная интуиция, они хорошо в предметных областях разбирабтся. Прогеры с математическим образованием их дополняют. В итоге у питоноёба - "захуячиь модельку, может сработает", а у хаскельёбов "сделать всё по топчику и по математике." Все профессии нужны, все профессии важны.
Аноним 15/08/20 Суб 01:32:00 1777802259
>>1777501
>Хаскел просто концептуально провалившееся говно

Это очень интересное утверждение. Что там провалилось?
Аноним 15/08/20 Суб 15:26:15 1778123260
>>1777801
Лол, да что там автоматизировать. В линтере опцию разрешить. Ебать достижение. Дегенератов надо просто не нанимать. Дегенератов везде дохуя.
Аноним 16/08/20 Вск 00:30:13 1778496261
>>1777802
тем, что это яп для борщехлебов. И вообще, ФП как концепция с треском провалилась. ООП заовнил мир, смиритесь уже, блять.
Аноним 16/08/20 Вск 09:14:32 1778586262
>>1778496
Смеялся.

Сейчас любой современный ЯП поддерживает ФП и чем новее, тем в большей степени. Наоборот, если ЯП не поддерживает ФП, это либо говно мамонта, либо просто убогое поделие вроде goвна.
А в old-java-style ООП как раз все разочаровались ещё когда ты пешком под стол ходил, и на ОО-языках сегодня стараются писать более менее плоско, и без всей этой gof хуйни, юзая по максимуму композицию и интерфейсы с дженериками, которые является урезанной версией хаскельских тайпкассов. Кто знает, может когда-то мариыханы доэволюционируют и до них а то что в свифте, что в ф-шарпе до сих пор функтор нельзя написать
Аноним 16/08/20 Вск 10:17:31 1778598263
>>1778586
От ФП языки взяли максимум лямбды, потому что это реально удобно в некоторых ситуациях. Но взять 1-2 фичи из ФП != победа ФП как концепции.

Это не в ООП разочаровались, а в отдельных ее принципах. Пример - наследование. Стараются его не использовать когда не надо, предпочитая композицию или аггрегацию. Во всем остальном - концепция разделения программы на классы и танцы вокруг объектов, основной посыл ООП, что тогда выстрелил, что сейчас активно используется везде, потому что эта концепция идеально ложится на человеческое сознание и ВНЕЗАПНО крупными проектами становится управлять куда проще. И расширять их тоже.

Даже в ядре Линукса, написанном на чистых сях где нет ООП, есть куча реализаций ООП конструкций через костыли.

Покажи мне хотя бы один крупный всемирно известный проект, который от А до Я написан в духе ФП и про который знает каждая собака? Покажи мне тонны вакансий на ФП языки. А, их нет? Потому что ФП языки используют 2 с половиной компании по всему миру. Концепция как таковая провалилась с треском и оказалась никому не нужная. Отдельные ЯПы позаимствовали некоторые фичи, типа лямбд, и все.
Аноним 16/08/20 Вск 12:51:43 1778649264
Где можно почитать, чтобы подробнее все эти типы, классы и классы типов, типы классов разбираются?
Я ещё правда и Липовача не дочитал, но решил задачки на кодварс порешать, и вот столкнулся с задачей нарциссичного числа.
Я его решил через функцию объявив:
narcissistic :: Int -> Bool
Но у меня не проходит последний тест, потому что изначально функция была задана как:
narcissistic :: Integral a => a -> Bool
Вот, и я не особо понимаю как с этим работать.
Аноним 16/08/20 Вск 13:11:17 1778662265
>>1777802
Ты же понимаешь, что хаскель - язык бай дезигн с абстрактной системой и ничем кроме нее, прмитивы отсутствуют как таковые?
Есть вооброжаемый фрейм интерпритации данных, вопрос один: нахуя его реализовывать программно?
Мне лень расписывать, тем более когда финт ушами и переворот мейнстримного "примитив + абстракции -> примитивы -> реал ворлд" в "абстракции + черный ящик -> реал ворлд" на практике пёрнул в лужу
Ничто не мешает писать согласно категори теори на любом из языков и без куколдного велосипеда
Аноним 16/08/20 Вск 15:38:34 1778756266
>>1778662
>этот спутанный выпук ООП-шизика
Аноним 16/08/20 Вск 16:01:43 1778784267
>>1778756
>этот пук ничего не понимающего в фп васи из 9б
Аноним 21/08/20 Птн 00:24:03 1783434268
>>1778123
>Лол, да что там автоматизировать.
Под "автоматизацией" я имел ввиду следующую задачу: есть портянка говнокода на Питоне с ML-моделью, которая запускается ручками в ждупутере, тормозит, падает и работает на 100 тестовых клиентах. Нужно сделать так, чтобы эта модель работала на всём секторе клиентов малого и микробизнеса, и каждое утро ровно в 10 часов выкладывала красивые отчеты на столы региональным менеджерам. Очевидный вариант: переписать на Скалке, использовать Спарк, прикрутить к Спарку Hyperscan вместо питоновских регулярок. Но хуй там плавал. Мало того, что сам алгоритм вычисления фичей написан датасаентистом, чей разум был помутнён влиянием Слаанеш, так еще там куча пиноёбских багов, которые с точки зрения интерпретатора - вовсе не баги. И самое смешное то, что модель обучена именно на этом сете ебанутых фичей. Ну модели ведь похуй, что ей подают на вход. Если ты будешь подавать на вход прибыль со знаком "-", она просто научится тому, что отрицательная прибыль - это хорошо. В итоге задача автоматизации сводится к тому, что надо воспроизводить ебанутейшую питовскую программу на чём-нибудь более производительном. Или искать другие варианты.

>Дегенератов надо просто не нанимать.
Разделения на дегенератов и не дегенератов не существует. Пример из жизни. Моя первая работа, сеть бутиков модной одежды. Я там работал программистом. Была там одна тёлочка, которая кое-кого из начальства подзаебала и коммерческий директор мне сказал: "ну ты типа научи её как делать отчеты в Access, если за неделю она не научится, значит она тупая, я её под этим предлогом уволю". Я не очень хотел играть роль инструмента, который сделает грязную работу. Вообще, бесят грязные пидарасы в чистых рубашках, которые говорят что-то вроде: "Мы не хотим брать этого человека, завали его на собеседовании". В Игре Престолов было хорошо сказано, что если ты вынес человеку смертный приговор, то приведи его в исполнение сам, иначе ты трус и хуесос. Но знаешь, обучить её Access - это была миссия невыполнима, она вообще нихуя не секла, полное отсутсвие логического мышления. Но при этом она была одной из тех немногих людей, которые посмотрев на выставку моды в Италии могли сказать, что вот это шмотьё будут покупать и носить в Екатеринбурге, а вот это - не будут.

Я уж не помню, уволили её или нет. Но суть не в этом. Есть люди, которые умеют классно решать какие-то одни задачи, но могут показаться полными "дегенератами" в других. Так и с data science. Крутой датасаентист может быть очень хуёвым программистом часто так оно и есть, а очень хороший программист не факт что что-то сможет в DS. Суть в том, что надо учиться и искать инструменты, которые позволяют людям с различными талантами эффективно взаимодействовать, а не списывать всё на то, что кто-то якобы "дегенерат". Ну только если человек реально не дегерат.

По моему мнению, если программист родившийся и выросший в России, не любит Хаскель, не понимает его красоты, его системы типов, ссылочной прозрачности, бескрайних возможностей multi-stage programming, ночных хакатонов, осеннего релиза, первой версии синглтонов, июльских багрепортов, FFI-просторов, функционального подхода, функционального характера - он дегенерат. Ведь ты же русский программист? Ты родился в России? Ты ходил в среднюю школу? Ты служил в армии? Ты учился в техникуме? Ты работал на заводе? Ты программировал на Delphi? Программировал на Delphi? На Delphi программировал? Программировал, а? Ты на Delphi программировал, а? Программировал? Чего молчишь? На Delphi программировал? А? Чего косишь? А? Заело, да? Программировал на Delphi? Ты, джаваёб? На Delphi программировал? Программировал, падло? Программировал, гад? Программировал, падло? Программировал, бля? Программировал, бля? Программировал, бля? Чего заныл? Программировал, сука? Программировал, бля? Программировал, бля? Программировал, бля? Чего ноешь? Чего сопишь, падло? Чего, а? Заныл? Заныл, падло? Чего сопишь? Так, бля? Так, бля? Так вот? Вот? Вот? Вот? Вот, бля? Вот так? Вот так? Вот так? Вот так, бля? На, бля? На, бля? На, бля? Вот? Вот? Вот? Вот? На, бля? На, сука? На, бля? На, сука? На, бля? На, сука? Заныл, бля? Заело, бля?

Аноним 21/08/20 Птн 00:29:35 1783439269
>>1778496
Нет, ну в 2010 таким как-то можно было бы еще более-менее жирно троллить, но сейчас уже вообще никак.
>>1778662
>прмитивы отсутствуют как таковые?
Ну да, GHC.Prim отсутсвует как таковой.
>Ничто не мешает писать согласно категори теори на любом из языков и без куколдного велосипеда
Ну да, на scala cats попиши и расскажи, где велосипеды.
Аноним 21/08/20 Птн 03:56:02 1783486270
Функциональное программирование не полноценно.

Докажите обратное.
Аноним 21/08/20 Птн 04:07:01 1783490271
Аноним 21/08/20 Птн 14:22:23 1783945272
>>1783434
Ну нет. Дегенерат это человек претендующий на определённую компетенцию, то есть сам заявляет что он синиор хуйня девелопер, но выполнить ничего не может. Тёлочка, про которую ты рассказал, это как микроскоп, которым забивали гвозди, это проёб управления.

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

> не любит Хаскель, не понимает его красоты, его системы типов, ссылочной прозрачности
Всё больше убеждаюсь что функциональное программирование это болезнь по типу аудиофилии. Если человек слаб мозгом и влез в ФП, считай что общество его потеряло, он будет как Голум ходить и шипеть про свою прелесть, постоянно причитать что у вас мол нет ссылочной прозрачности или чистоты, тут не гибко, тут не гомоиконно, тут система типов не такая как надо, упорно закрывая глаза на минусы ФП, которых не так уж мало. И это при всём при том что язык это как ебаная отвёртка, чтобы собирать большие и полезные вещи. Да, у функциональщиков отвёртка красивая, умеет менять размер и профиль, но это же всего лишь сука отвёртка, и чтобы сделать что-то полезное нужны ещё пила, топор, уровень, лопата (читай библиотеки, фреймворки, базы данных, люди в конце концов). И каким-то чудом почти все работающие пилы, топоры и лопаты сконцентрированы в других языках. Может быть потому что чуть меньше уделяли внимания отвёртке?

Давай я тебе попроще скажу, чтобы ты не цитировал и не опровергал каждое моё слово. Хаскель сосёт когда нужно сделать симуляцию в довольно большом стейте, к примеру сделать игру жизнь с полем 10к х 10к. Здесь чистота играет против него, и никакая умная распорка (что там у вас, STMonad сейчас для такого?) не оправдает использование хаскеля для такой задачи. Ну не будет никакого бонуса ни от ссылочной прозрачности, ни от системы типов и прочего.

> Так, бля? Так, бля? Так вот? Вот? Вот? Вот? Вот, бля? Вот так? Вот так? Вот так? Вот так, бля? На, бля? На, бля? На, бля? Вот? Вот? Вот? Вот? На, бля? На, сука? На, бля? На, сука? На, бля? На, сука? Заныл, бля? Заело, бля?
Хуя ты сломался.
Аноним 21/08/20 Птн 14:33:39 1783954273
>>1783486
Тьюринг-полнота присутствует. Ты соснул. Что и требовалось доказать
Аноним 21/08/20 Птн 18:04:04 1784291274
>>1783954
> Тьюринг-полнота присутствует
Толку от этой Тьюринг-полноты, если ввод-вывод не возможен в чистом ФП.

В Хаскелле(да и в чистом ФП впринципе) не возможно передать некоторые концепции, которые хаскеллисты просто перекидывают на компилятор, потому их язык не способен в описание этих концепций.

Алсо, ФП не полон, потому что не может адекватно описывать некоторый мир/вселенную.
Банальный пример:
Есть объект Наташа Еотова типа Человек:
Human("Наташа", "Еотова")
Но вот так случилось, что она женилась на Ване Ерохине и сменила фамилию на Ерохина.

Вопрос: как описать этот процесс в терминах ФП?
Ответ: склонировать Наташу Еотову с новой фамилией, а старую выкинуть в мусоросжигатель.

Звучит глупо и не естественно, не так ли?

Даже математику Хаскелл не поддерживает в полной мере(только её часть), ведь в математике огромную роль играют ограничения.
Аноним 21/08/20 Птн 21:46:18 1784408275
>>1784291
О да, ебанутые аналогии это мега аргумент.
Аноним 21/08/20 Птн 21:55:57 1784422276
>>1784408
Аналогия показывает концептуальную нестоятельность и непрагматичность Хаскелла как язык общего назначения. Или напиши хотя бы 2D игру с нуля.
Просто признайте, что Haskell - DSL для части математики, называемой лямбда-исчислением, в той же степени, что и JS это DSL для написания web-приложений.
Аноним 21/08/20 Птн 22:08:39 1784430277
>>1784422
Любой язык хорош под свои задачи.
>просто признайте блаблабла
У хачкеля пошире область применения чем ты мнишь.
Аноним 21/08/20 Птн 23:43:51 1784497278
>>1784430
>У хачкеля пошире область применения чем ты мнишь
Тем временем почти вся индустрия положила хуй на ФП, в частности на хачкель.
Хрюкни ченить на иммутабельном, фп-шиз
Аноним 22/08/20 Суб 01:27:37 1784579279
Аноним 22/08/20 Суб 03:26:50 1784612280
>>1784291
>>1784422
>>1784497
Ты глупый и очень жирный. Разобрался бы сначала в вопросе получше, а то твой фонтан говна обратно тебе на голову падает.
Аноним 22/08/20 Суб 12:34:13 1784754281
Господа, а что собственно индустрия взяла у ФП-пуритан? Давайте посмотрим:
1) лямбда-синтаксис. Ок, приятный сахар, но не более. Семантически без разницы, передашь ты анонимную функцию, или объявишь строчкой выше.
2) чистые функции. Никто не запрещает писать их хоть на Си. Да, конечно можно поговорить о _больших_ гарантиях чистоты (потому даже хаскель не гарантирует от unsafe под капотом), но это всё ещё вопрос кодстайла, бестпрактик и трейдоффов.
3) иммутабельность, см. про чистые функции.
4) ADT. Ребята, ADT -- это про типы данных, точка. Не про ФП, ООП, а сугубо про данные. Может быть процедурный бейсик с АДТ, и тру-ФП язык без них. хаскель-детям, не видевшим другого ФП, не понять.

А теперь, сектанты -- вам слово: нахуя индустрии ваши ритуальные приседания и игрушечные языки без библиотек? В каких областях применения они доминируют и дают больший перфоманс?
Аноним 22/08/20 Суб 13:19:07 1784770282
>>1784754
Отсутствие наллов, монадки. Посмотри на раст - в нем что для Option, что для Either есть монадо-подобный сахарок.
>А теперь, сектанты -- вам слово: нахуя индустрии ваши ритуальные приседания и игрушечные языки без библиотек? В каких областях применения они доминируют и дают больший перфоманс?
Почему что-то должно доминировать и давать ПЕРФОМАНС? На хаскеле просто приятно писать, вот и все. Я так само выбрал шарп, который обьективно был хуже джавынет тонны библиотек, под мобилки не напишешь, тогда даже кроссплатформы не было, но имел тонну приятного сахарка и фиксы джавовских ошибок.
>>1783945
Ты навел пример карты 10к на 10к. Пихаешь ее в ST монаду, заворачиваешь ее в Embed эффект и вот ты уже по сигнатуре любой функции знаешь, изменяет она ли эту карту, пишет ли она лог, делает ли запрос на сервер и тд. Хаскель это не про иммутабельность, хаскель это про явное различие чистых и "нечистых" функций на уровне типов. Он прекрасно подходит для написания dslв том числе, или даже в первую очередь, императивных dsl, во многом благодаря сахарку для монад.
Или ты думаешь, что на хаскеле все пишут чистые функции типа String -> State -> String? Я тоже так думал, но как только начал писать на нем код, разорвав себе анус, понял, что никто так и не пишет - все юзают или mtl, или системы эффектов.
Алсо, вот тебе ИМПЕРАТИВНАЯ ecs на хаскеле, как пример императивной dsl: https://hackage.haskell.org/package/apecs
Отлично подойдет к примеру с игровой картой, кстати.

Аноним 23/08/20 Вск 16:29:47 1785594283
>>1784770
Отсутствие наллов -- это не имеет отношения к ФП. В паскале их нет, как и бейсик, такие-то ФП языки. Не разумно и странно всё, что есть в Хаскеле, но не в Си, называть ФП.

На раст посмотрел -- лютая низкоуровневая императившина, с контролем времени вполне себе мутабельных состояний.
Давайте не будет во всём видеть монады, а увидев монаду -- кричать что это ФП. А Option и Either, как и прочие алгебраические типы -- это, простите за тавтологию, часть системы типов -- штуки ортогональной к ФП/ООП/Процедурному.

С точки зрения приятно писать -- респект, нормальный аргумент. Плюс польза для развития мозга и кругозора. Если бы ещё тот же Хаскелль с завидной регулярностью не продвигался неофитами как супер-пупер штука, которая заменит сейчас жабу, дваскрипт, питон и С++ разом, просто опытные дяди, пишущие промышленный код, ещё не знают. Правда том, что большинство этих дядь потрогали и ФП, и какой-нибудь хаскель, кложу, как и раст, и ничего нового неофит не приносит, а сугубо создаёт шум.
Аноним 23/08/20 Вск 17:11:13 1785637284
>>1784754
1 - функции высшего порядка это основное
2 - на си их нельзя писать из-за невозможности вернуть буфер. Именно фпшники придумали ту машинерию, которая позволяет нормально использовать чистые функции
3 - аналогично
4 - тем не менее, именно замороченность на фп заставила людей задавать правильные вопросы, чтобы получить на них ответы
Аноним 24/08/20 Пнд 02:29:21 1786001285
>>1785637
1) Ну если функции высшего порядка -- это основное, то Го -- ФП, лол.

2) В те времена, когда появилась "машинерия которая позволяет нормально использовать чистые функции" инженеры не выделяли в своей среде "ФПшников", а дядюшка Боб бегал в коротких штанишках и изучал Алгол-68. (кстати, зацени примеры кода в Wiki)

4) ох-ох, вот опять ФП -- луч просветления в тёмном царстве невежества. Вас послушать, так больше полувека индустрия развивается под чутким влияние ФП, но почему-то в основном поперёк ФП. Прям тайная ложа ФП-массонов,
А по факту люди умнее меня и тебя боролись со сложностью всё это время, в т.ч. и с помощью тех инженерных принципов, которые сейчас лежат в основе функционального подхода. И принципы эти а) не эксклюзивны для ФП, б) не серебряная пуля, в) _реализация_ этих принципов в тех или иных языках -- ещё более не серебряная пуля
Аноним 24/08/20 Пнд 17:34:17 1786610286
>>1783439
>В хаскеле есть примитвы
>GHC.Prim
Всё что нужно знать об этом треде
Аноним 26/08/20 Срд 21:08:31 1789071287
Аноним 29/08/20 Суб 02:52:45 1791632288
>>1783945
>Хаскель сосёт
Сосал может быть в 2010, но вот сейчас вообще не сосёт, ни разу.
>>1784291
>ввод-вывод не возможен в чистом ФП
Охуеть, сколько там лет IO?
Аноним 30/08/20 Вск 02:45:05 1792370289
>>1789071
Не читал, но забей. В Хачкеле делают линейные типы и зависимые типы, вот уже прямо сейчас делают. Это покроет все требования к типизации.
Аноним 30/08/20 Вск 11:40:47 1792490290
>>1791632
Ну раз уж ты скозал... хотя нет, все равно высасывает говно из жепы.
Аноним 30/08/20 Вск 11:57:32 1792505291
>>1791632
> Охуеть, сколько там лет IO?
Определение чистой функции не допускает побочных эффектов. Вообще.
Аноним 30/08/20 Вск 12:16:41 1792526292
>>1792505
IO - это как стейт монада, в которой стейтом является весь мир. Правда, получить экземляр мира за всю работу программы ты можешь только один раз, что и делается в функции Main

Значит, такие функции детерментрованы, ведь даже Random :: IO Int внутри можно представить как Random :: World -> (World, Int), а так как возможных состояний мира бесконечно много, то и результатов такой функции бесконечно много. только попробуй доебаться, что из-за некоторых квантовых эффектов вселенная недетерминирована, поэтому хаскель сасать
Ну и естественно, с такого описания IO монады, можно понять, что сайд эффектов в функциях нет, так как для таких функций любой эффект не сторонний.
Аноним 30/08/20 Вск 20:56:39 1793025293
>>1792526
> Правда, получить экземляр мира за всю работу программы ты можешь только один раз
А если потребуется несколько раз?
Аноним 30/08/20 Вск 22:31:36 1793080294
>>1792526
>>1793025
Можно запустить новый тред.
main создаёт какой-то экземпляр IO, который потом каким-то образом запускается каким-то механизмом.
forkIO получает IO и запускает его.
Значит ли это, что forkIO получает новый экземпляр мира?

Какой экземпляр мира подаётся на вход IO, выданной функцией main и какой экземпляр мира подаётся на вход IO, переданной функции forkIO?

Наверное пример об IO как о монаде, стейтом которой является весь мир - это просто пример, метафора или даже что-то наподобии мнемонического правила. Как например newtype: мы можем представлять себе, что это какая-то обёртка, но компилятор заменяет их тем, что в них содержится и с точки зрения машины никаких обёрток нет. Но это не мешает нам представлять себе, что обёртка есть, ведь для того она и была придумана.
Аноним 01/09/20 Втр 00:43:12 1794268295
>>1792526
IO -- это как костыль Хаскелля, который ты не можешь написать сам на Хаскелле.
Ну и уж конечно ты получаешь экземляр _не_ один раз (ну или этот один экземпляр мутирует сам, независимо от кода ФП-программиста, лол), например когда несколько раз выводишь текущее время
Аноним 01/09/20 Втр 01:12:06 1794279296
>>1794268
>IO -- это как костыль Хаскелля, который ты не можешь написать сам на Хаскелле.
Ага, а class - это как костыль Java, который ты не можешь написать сам на Java.

>который ты не можешь написать сам на Хаскелле.
Вообще забавное утверждение, учитывая, что как и любой нормальный ЯП, хаскель написан на самом себе, а сишные куски присутствуют либо в рантайме, либо как часть компилятора ответственная за генерацию си кода, которую он поддерживает.

>который ты не можешь написать сам на Хаскелле.
Не так уж сложно:

module MyIO(MyIO, myPutChar, myGetChar, convert) where

type Input = String
type Remainder = String
typeOutput = String

dataMyIO a = MyIO (Input -> (a, Remainder, Output))

apply :: MyIO a -> Input -> (a, Remainder, Output)
apply (MyIO f) inp = f inp

myPutChar :: Char -> MyIO ()
myPutChar c = MyIO (\inp -> ((), inp, [c]))

myGetChar :: MyIO Char
myGetChar = MyIO (\(ch:rem) -> (ch, rem, ""))

---------------------------------------------------------------------------------------
instance Monad MyIO where

return x = MyIO (\inp -> (x, inp, ""))

m >>= k = MyIO (\inp ->
let(x, rem1, out1) = apply m inp in
let(y, rem2, out2) = apply (k x) rem1 in
(y, rem2, out1++out2)

---------------------------------------------------------------------------------------

convert :: MyIO () -> IO ()
convert m = interact (\inp ->let(x, rem, out) = apply m inpinout)
Аноним 03/09/20 Чтв 02:09:01 1795852297
>>1784422
>Аналогия показывает концептуальную нестоятельность и непрагматичность Хаскелла как язык общего назначения.

Хаскель хорош именно как язык общего назначения.

Если нужно написать какое-нибудь байтоёбство вроде https://github.com/Cyan4973/xxHash то да, сишка лучше. Да, это можно почти дословно портировать на Хаскель и работать будет почти так же, но сишка - лучше. Если что, я выполнил частичный порт этой либы чисто для себя, я его не публиковал, мне хотелось, чтобы это работало на unpinned ByteArray#, поэтому не воспользовался FFI, сейчас думаю, нахуй мне unpinned, возможно, на обычных указателях было бы лучше и ничего портировать бы не пришлось, портирование кода - обезьянья работа, ощущение - пишешь на неудобном варианте сишки. Ни от каких проблем сишки, вроде выхода за пределы буффера если ты где-то неправильно вычислил индекс, Хаскель не спасает когда ты пишешь на нём как на сишке. Добавляет проблем - примитивные операторы более громоздкие, чем в сишке, плюс надо разбираться в монадках и том, как работает конпелятор, чтобы не обосраться с производительностью. Я еще Salsa20 портировал, те же проблемы, несколько дней ебался.

Если нужен какой-нибудь "DSL для части математики", а вернее язык, позволяющий не программистам что-нибудь наговнячить, то там Питон лучше, даже R - лучше. На Хаскелле всё это можно сделать, но нужно тупо лучше разбираться в программировании, вопрос - нахуя если есть инструмет, который позволяет решить аналогичную задачу с меньшим усилием? Тем более, что в случае Питона задача скорее всего уже решена.

Но именно как язык общего назначения Хаскель рулит. В нем можно сделать почти всё. Он и Питон может эмулировать и сишку. В каждой конкретной задаче он будет немного проигрывать специализированному инструменту по трудозатратам или скорости. Но если у тебя несколько задач, которые нужно объединить в одном приложении, то Хаскель как универсальный инструмент на порядок качественне, чем любые другие языки, которые претендуют на роль универсальных.

>>1784291
>Ответ: склонировать Наташу Еотову с новой фамилией, а старую выкинуть в мусоросжигатель.
>Звучит глупо и не естественно, не так ли?

Вот этим https://arxiv.org/pdf/1803.08617.pdf парням расскажи про глупость использования иммутабельных структур. Нет, не глупо, иногда даже очень полезно, зависит от задачи. И Хаскель, как язык общего назначения, не вынуждает использовать какую-то одну парадигму. Можно сделать и так и по-другому. Естественно, он немного проиграет специализированному языку, заточенному под конкретную парадигму, но именно как универсальный он хорош. Хотя сжигает жопу, когда хочется и производительность сишки и низкий порог вхождения Питона одновременно, это компромисс, присущий любому универсальному инструменту.
Аноним 03/09/20 Чтв 02:24:10 1795853298
>>1784770
>Хаскель это не про иммутабельность, хаскель это про явное различие чистых и "нечистых" функций на уровне типов.
Кстати да. Много раз слышал от мамкиных троллей, что Хаскель не работает, потому что он "чистый". А вот люди, программирующе на Хаскеле, больше его описывают как язык, позволяющий обозначать эффекты. Т.е. Хаскель и есть именно императивный язык, в котом вся система типов крутится вокруг императивных эффектов.

Что есть в императивной Джаве для обозначения эффетов? Нихуя. С чего начинается работа с Хаскелем? С того, что надо понять, что такое монада. Так монада - она как раз про эффекты и императивное программирование.
Аноним 03/09/20 Чтв 02:38:37 1795857299
>>1785594
>На раст посмотрел -- лютая низкоуровневая императившина
Неплохая, кстати. Но более тяжеловесная, чем Хаскель. Люди, мигрировашие с Хаскеля и других языков на Rust, утверждают, что Rust быстрее, но требует больших усилий в предварительном проектировании и сопровождении.
>Правда том, что большинство этих дядь потрогали и ФП, и какой-нибудь хаскель, кложу, как и раст, и ничего нового неофит не приносит, а сугубо создаёт шум.
Нет, в этом нет правды. Правда в том, что дядям нет смысла мигрировать на более эффективный язык потому что помимо эффективности самого языка есть множество других факторов, которые заставят тебя выбрать ту же джаву.
Аноним 03/09/20 Чтв 02:45:25 1795860300
>>1794268
>IO -- это как костыль Хаскелля, который ты не можешь написать сам на Хаскелле.
Да с хуёв ли? А ST - тоже костыль? А линейные типы, которые вот-вот введут в конпеляторе, но при этом они не разрушат обратную совместимость, тоже костыль?
Аноним 03/09/20 Чтв 04:08:00 1795865301
>>1794268
>IO -- это как костыль Хаскелля, который ты не можешь написать сам на Хаскелле.
Ты не осилил основной и единственный концепт хаскелля, лол.
Аноним 03/09/20 Чтв 15:39:34 1796391302
>>1794279
Ты дурачок, да?
Ты можешь написать монаду MyIO, или любую другую. Но т.к. это не "Magic IO" все твои монадические вычисления в MyIO не выведут даже пук на экран, пока ты не используешь IO под капотом.

>>1795860
Ты можешь написать MyST, и он будет не хуже. MyIO выше уже обосрались написать, только обернуть

>>1795865
Критикуют ФП -- скажи "ты просто не осилил" (С)то лучших практик защиты ФП
Аноним 03/09/20 Чтв 23:14:41 1796822303
>>1794268
Две особенности IO:
1) Это тип, у которого нет инстансов. Можно использовать "IO a", но не инстансы. Т.е., как я понял, нет типов-инстансов IO.
2) Компилятор может инлайнить или по-другому манипулировать любым другим выражением в программе, но он ничего не будет делать с IO-экшном.
Аноним 04/09/20 Птн 01:18:12 1796904304
>>1796391
Безграмотная долбоёбушка, ты не можешь написать ни одного поста чтоб не обосраться.

Начнём с того, что твой тезис
>IO ты не можешь написать сам на Хаскелл
изначально ошибочен, так как IO написан на Хаскелле и его имплантацию ты можешь посмотреть на hackage.

Потому что IO - это никакое не волшебство, это обычная монада, которая пишется так же, как любая другая, и её значения это не какие-то магические функции передачи мира, а просто данные.

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

Дальше можно сделать:

module MyEcho where
import Char
import MyIO

myPutStr :: String -> MyIO ()
myPutStr = foldr (>>) (return ()) . map myPutChar
myPutStrLn :: String -> MyIO ()
myPutStrLn s = myPutStr s >> myPutChar ’\n’

myGetLine :: MyIO String
myGetLine = myGetChar >>= \x ->
if x == ’\n’ then return []
else myGetLine >>= \xs -> return (x:xs)

myEcho :: MyIO ()
myEcho = myGetLine >>= \line ->
if line == ""then return ()
else myPutStrLn (map toUpper line) >> myEcho

main :: IO ()
main = convert myEcho

В чём суть твоей предъявы совершенно непонятно. Как будто у тебя претензии к тому, что встроенные getLine/putStr работаю со встроенной IO. Но дело в том, что никаких фундаментальных ограничений для написания своих getLine/putStr, которые бы работали с другим типом нет, просто никому нахуй не нужно переписывать кусок стандартной прелюдии для чтения/записи с/на девайс.
Аноним 04/09/20 Птн 01:27:29 1796907305
>>1796904
Вау! Какие сочные оправдания!
Мой мальчик, зачем ты навернул ещё уровень абстракций, пытаясь скрыть свой обосрамс?
Аноним 04/09/20 Птн 11:11:14 1797038306
Аноним 04/09/20 Птн 11:26:05 1797044307
>>1796904
Чет не находит хэкэдж исходник data IO. Мб скинешь?
Аноним 04/09/20 Птн 11:26:07 1797045308
>>1796907
>куд-кудах нельзя написать IO монаду на хаскеле
>отправляют на hackage смотреть реализацию IO монады на хаскеле
>пук, сделаю вид что не обосрался
>за 3 минуты пишут свою IO монаду на хаскеле
>пок-пок это обрётка над "волшебной (sic!) IO"
>где она её оборачивает, в чём заключается отличие?
>пук, сделаю вид что не обосрался
>уже несколько анонов объясняют что IO это просто контейнерный тип, хранящий обычные данные, работающий по простой логике
>покпокпок короче это ты обосрался, а не я!

Какой же ты дебильный кусок, просто уёбывай. Самое смешное что ты написал 0 содержательных постов, сплошной пердёж в лужу с обосрамсом через слово.
Аноним 05/09/20 Суб 09:19:47 1797840309
>>1796391
>не выведут даже пук на экран, пока ты не используешь IO под капотом.
Назови язык высокого уровня, в котором ты можешь написать функцию вывода на экран, не используя встроенные I/O функции и без вызова вставок на других языках. Жду.
Аноним 05/09/20 Суб 16:47:37 1798084310
>>1796391
>пока ты не используешь IO под капотом.
Dodique, в хаскелле как языке ни IO, ни примитивов нет в принципе
Если ты разуешь своё очко, то увидишь, что даже содержащие их модули относятся к компилятору e.g. GHC.Prim GHC.IO
>Критикуют ФП
>Эти высеры
Проиграл
Аноним 05/09/20 Суб 21:02:04 1798241311
>>1798084
ни IO, ни примитивов, ни функции main::IO(). Настоящие хаскелисты вообще нихуя на запускают в грязном рантайме, только пишут и читают пейперы
Аноним 06/09/20 Вск 03:53:38 1798464312
Аноним 06/09/20 Вск 12:04:47 1798577313
>>1798464
окей, пукают, читают пейперы и жидко дрищут в тред
Аноним 06/09/20 Вск 20:21:26 1799002314
>>1792370
Да мне же для своего языка, очень хочется сделать, ну...
Впрочем, я уже разобрался и почти закончил реализацию тайпчекера. Оказывается, статья довольно простая, из сложного в ней только объем.
Аноним 08/09/20 Втр 18:33:18 1800961315
>>1794279
Заранее говорю что я не траль и в хаскеле нуб
Я знаю как подобные IO штуки работают в скале, в точке входа висит интерпретатор который запускает твой IO
В хаскеле можно написать свой интерпретатор для своего IO? Обязательно ли использовать main :: IO () в качестве точки входа как тут:
>convert :: MyIO () -> IO ()
>convert m = interact (\inp ->let(x, rem, out) = apply m inpinout)

Ты всё равно приводишь свой IO к вшитому IO

>>1794268
И какие в этом проблемы? Суть фп в том чтобы уменьшить количество багов и успокоить свои нервы, какое мне дело до каких-то костылей если я уверен что код в 100% случаях будет работать как надо? Особенно если юзать зависимые типы
Аноним 08/09/20 Втр 19:08:03 1800985316
Аноним 09/09/20 Срд 02:29:07 1801315317
>>1800961
Есть какое-то исследование, что ФП уменьшает количество багов?
Критичное ПО для самолётов/атомных станций/подводных лодок пишут на ФП?
Аноним 09/09/20 Срд 03:25:12 1801326318
>>1800961
>Я знаю как подобные IO штуки работают в скале, в точке входа висит интерпретатор который запускает твой IO
Знаешь но не понимаешь что и зачем
Аноним 10/09/20 Чтв 22:28:56 1803087319
>>1488256 (OP)
живу в чехии, седня решил по приколу глянуть вакансии на хаскел ни одной не нашел
Аноним 11/09/20 Птн 14:56:11 1803616320
>>1803087
Разве не очевидно, что их нет? Максимум - писать микросервисы в проекте, гле основной язык это джава/нода/шарп/еtс.
Аноним 11/09/20 Птн 17:07:27 1803766321
>>1803616
Да конечно их нет, язык с высоким к сожалению, даже порог входа в хаскель считается высоким порогом вхождения, рантайм система делает редукции недетерминированно, насколько я помню ее исходники, узкие места по производительности бывает очень трудно предсказать и поправить из-за принципиальных несовместимостей ФП и архитектуры, основанной на Фон Неймановской.
Вот для чего хаскель реально хорош -- для мелких микросервисов, да. Для написания компиляторов других языков. Для академических целей.
Вообще, мелкософт не зря у себя хацкель держит, они на нем обкатывают новые красивые rocket-science штуки и затем внедряют их тихонько к себе в более практические продукты.
Вон, в шарп хотят тайпклассы завезти, наконец-то (хотя шарп лично мне не нравится, ну хоть в f# завезут, уже что-то не то чтобы я на нем активно кодил, лол).

Из практических фп языков взлетают такие, как кложа или эликсир, потому что строгие языки требуют строгого же понимания, что, собственно, за хуйню ты делаешь. А в продакшне никому не хочется ждать, пока ты додумаешься, чего и как настакать из монад и почему вот здесь GADT не дают скомпилиться.

P.S.
У меня больше теоретическое понимание хацкеля (компилятор на нем пишу переписываю), мне он нравится с технической точки зрения, но с продуктовой он не ко всему подходит. С одной стороны, типобезопасность круто, с другой, множество всех допустимых программ больше множества типизируемых на данный момент в любом языке программ, о чем сами авторы хаскеля (Пейтон-Джонс и ко) и говорили, да хоть вот в этой https://www.microsoft.com/en-us/research/publication/outsideinx-modular-type-inference-with-local-assumptions/ статье. Да, я снова приплетаю OutsideIn(X), потому что это самая шикарная статья по системе типов хаскеля из всех, что я читал. Каждый потраченный на ее разбор день прошел не зря.
Аноним 11/09/20 Птн 18:12:11 1803808322
>>1803766
Причины непопулярности хаскеля чуть более прагматичные чем кажется. Во-первых сейчас много платформ монополизируют языки ради экономии мозгов разработчиков и популяризации самой платформы: в вебе только жс, в продукции эпл свифт, в андроидах жава, итд. Во-вторых хаскелю катастрофически не хватает качественных библиотек и фреймворков, решающих насущные проблемы мира. Дрочить на всякие линзы и хуйпоймиморфизмы увлекательно, но наебашить MVP на коленке просто невозможно: ни документации хорошей, ни самих библиотек, ни сообщества. Для большинства хаскель это невероятно убыточное предприятие, которое не принесёт ничего кроме разочарования. Хаскель пробовали уже миллионы, и что-то ни одной ошеломительной истории успеха ещё не было.
Аноним 11/09/20 Птн 19:20:50 1803846323
>>1803808
Ну он потому что в первую очередь академический, да. Он больше привлекает, в силу своей природы, людей, ориентированных на те самые линзы, монады и элементы теорката. А у практиков более удобные инструменты под рукой + задачи, которые нужно решать прямо сейчас.

Собственно, я пытаюсь как раз на базе OutsideIn(X) сделать язык, у которого будет практическая ценность + предсказуемость нагрузки, но приходится немного изворачиваться, чтобы модифицировать эту штуку под подобие раста со сборкой мусора и процессами как в erlang. Вряд ли взлетит, конечно, зато есть чем заняться по вечерам :)
Аноним 12/09/20 Суб 19:22:41 1804585324
>>1803808
>Причины непопулярности хаскеля чуть более прагматичные чем кажется.
Ноль нормальных книг. Пробовал две. В обеих требуется дрочить вприсядку буквально с первых глав.
Аноним 12/09/20 Суб 19:28:08 1804590325
>>1804585
А как же книга Сашки Гранина?
Аноним 12/09/20 Суб 19:34:00 1804597326
>>1804590
Понятия не имею, кто это.
Аноним 12/09/20 Суб 22:52:07 1804793327
>>1804590
Ты о книге "Functional design and architecture"? Она есть в открытом доступе?
Аноним 12/09/20 Суб 23:00:10 1804796328
>>1804585
Что за книги ты пробовал?
Хорошие книги есть, но их нужно находить. Странно: найдешь ты хороший материал по хаскелю или нет как будто зависит от фазы Луны и ещё каких-то непонятных факторов. Или это мне только кажется.
Аноним 13/09/20 Вск 10:59:24 1805045329
>>1804796
Это были Beginning Haskell и The Haskell School of Expression.
Аноним 13/09/20 Вск 11:56:13 1805065330
>>1805045
Beginning Haskell - оно для продолжающих. Начинать надо было либо с липовича либо с курта
Аноним 13/09/20 Вск 12:27:45 1805085331
>>1805065
Название оказалось обманчивым.
Аноним 13/09/20 Вск 15:11:53 1805223332
>>1805085
Haskell оказался сильней
Последний моноид остыл...
Аноним 14/09/20 Пнд 14:36:37 1806121333
Существует ли тип описывающий все списки содержащие только единицы [1,1,1] и т.д? И можно ли выразить такой тип в Хаскелле?
Аноним 14/09/20 Пнд 14:42:52 1806130334
Аноним 15/09/20 Втр 01:05:47 1806887335
>>1806121
Можно создать список списков. Не очень понимаю, что значит "тип" в этом контексте. Информация о том, содержит ли список единицу или другое число, доступна только во время исполнения, а во время компиляции и типизации она не доступна. Тогда наверное нужно создать новый тип чисел и списков?
Аноним 15/09/20 Втр 05:56:59 1806941336
image2.png 24Кб, 493x268
493x268
image.png 42Кб, 631x465
631x465
>>1806121
Твой вопрос не имеет смысла потому что в хаскелле нет примитивов

В хаскелле как языке всё полиморфно, все типы по сути ничем не отличаются кроме своей структуры, всё это никак не трогает реальный мир

Единицу (1) в хаскеле можно реализовать как абсолютно ничего не значащий тип data One = One или data Hui = Hui, можно создать оба типа, идиоматически считать Hui за 0 и One за 1, создать data Bin = Nil | Hui Bin | One Bin deriving Show и писать бинарный код как чистые типы Hui (Hui (One Nil)). Одними лексическими конструкциями возможно навелосипедить и полноценный матан

В рамках хаскелля как языка все числа также являются типами, да и вообще хаскель а-ля лисп, только "эвресинк эс э дата эс э статик тайп сигнатур". Как оно втискивается компелюктором в уровень итогового языка или как оно переводит твои типовые - тебя как разработчика ебать вообще не должно. Int ты можешь воспринимать как data Int = Zero | One | Two ...

До говнометных долбаебов выше не может дойти, что IO в рамках хаскелля как языка- такая же нихуя не делающая простейшая монада, в реальном мире ей приписывает компилятор захардкоженные действия под сигнатуру на конкретно эту монаду. Можете написать свои реал-ворлд действия через ffi под другую монаду, но вы будете писать интерпретатор IO, а не IO. IO как монада IO в хаскеле - тупо пробрасывание туплы, как скопипастил >>1792526


>тип описывающий все списки содержащие только единицы [1,1,1] и т.д
Эта хуйня не имеет никакого смысла с точки зрения типов. Все джва миллиарда инт32 чисел имеют сигнатуру Int, линкед лист тут является сторонней дата структурой-упаковкой и отношения к контенту не имеет

Я не очень понимаю цели. Проверяй ручками, соответствует вставка дырке или нет. Чё ты напредставлял, чтобы оно по каким-то типам магически подгоняла данные в рантайме - хуй знает https://dpaste.com/F8UEQH7XM
Можешь еще создать сразу дату со структурой линкед листа вместо отдельной сувания даты в отдельную линкед лист структуру , если полиморфизм тебе не нужен
Аноним 16/09/20 Срд 00:01:32 1807725337
>>1801315
>Есть какое-то исследование, что ФП уменьшает количество багов?

Есть только экспертные оценки. Реально такое исследование провести практически не возможно, потому что нет формальных критериев, по которым можно считать баги.

>Критичное ПО для самолётов/атомных станций/подводных лодок пишут на ФП?

Нет, его пишут на асме и C и тестируют до посинения. В таком ПО не важна стоимость разработки, но важно, чтобы оно работало на однобитном процессоре, собранном из чугуна и гаек. Реактивные двигатели вообще запускают с помощью "контроллеров", выточенных на токарном станке. Там кулачковый механизм замыкает контакты в определенной последовательности.

ФП нужно для того, чтобы можно было быстро слепить что-то более-менее рабочее не прилагая слишком много усилий. Если тебе нужно написать ПО для самолёта, всегда есть возможность нанять миллион программистов и тестировщиков и протестировать 10 строк кода вообще на всех возможных вариантах или не всегда https://ru.wikipedia.org/wiki/%D0%90%D0%B2%D0%B0%D1%80%D0%B8%D1%8F_%D1%80%D0%B0%D0%BA%D0%B5%D1%82%D1%8B-%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8F_%C2%AB%D0%90%D1%80%D0%B8%D0%B0%D0%BD-5%C2%BB_(4_%D0%B8%D1%8E%D0%BD%D1%8F_1996_%D0%B3%D0%BE%D0%B4%D0%B0)
Аноним 16/09/20 Срд 00:11:32 1807734338
>>1807725
Что значит нет? ФП применяется как раз такие в ПО с высокими требованиями к безопасности. Agda та же самая. Common Lisp в военке очень уважают. Clojure - в банковском ПО.
Аноним 16/09/20 Срд 00:24:04 1807740339
>>1803766
>рантайм система делает редукции недетерминированно

Ну нет, естественно детерминированно. Просто хуй проссышь как именно, потому что алгоритмы оптимизации слишком сложные. Кстати, llvm и gcc тоже оптимизируют хуй проссышь как именно, и когда нужна очень хорошая оптимизация, все тоже сводится к ручному подбору. Можешь глянуть на это дрочилово https://github.com/Cyan4973/xxHash/blob/dev/xxhash.h

Задача любого высокоуровневого языка не в том, чтобы программист досконально понимал, как его программа переводится в ассемблерный код а ведь даже если будет понимать, в любом современном процессоре хуй проссышь как работает кешь, префетч, тротлинг и бранч-предикшн, ты даже на асме рискуешь словить неожиданную просадку производительности https://blog.cloudflare.com/on-the-dangers-of-intels-frequency-scaling/ а в том, чтобы среднестатистическая программа работала более-менее нормально.

Я думаю, что можно считать, что Хаскель примерно раза в 3 медленнее сишки в среднем по больнице. Да, в каких-то местах его можно разгонять до скорости сишки, но это очень больно, нестабильно и делается путём проб и ошибок. Но и сишка не очень-то стабильна в плане перформанса и когда там на экстремальную производительность выходят, тоже очень ебуться. Поэтому на Хаскеле надо тупо писать в идиоматичном стиле. Часть потенциальных оптимизаций проебётся, часть сработает, в среднем будет треть производительности от сишки, если такая производительность устраивает, то почему нет?

Аноним 16/09/20 Срд 00:31:12 1807744340
>>1803808
>ни документации хорошей
Документация, кстати, одна из лучших. Он только за счёт документации и выезжает. Вообще не представляю, как бы было возможно на нём программировать, если бы не hackage с гиперссылками и полной документацией по всем пакетам.
Аноним 16/09/20 Срд 00:35:24 1807749341
>>1806121
Множество всех списков, содержащих только единицу, изоморфно натуральному числу, равному длинне этого списка. Ну да, тип описывающий натуральные числа существует.
Аноним 16/09/20 Срд 00:37:53 1807751342
>>1806130
>Стандартная библиотека языка Си — это описание программного интерфейса, а не настоящая библиотека, пригодная для использования в процессе компиляции.

Аноним 16/09/20 Срд 17:48:42 1808333343
>>1807749
> Множество всех списков, содержащих только единицу, изоморфно натуральному числу
Но не равна ему. List и Integer это разные типы данных.
Аноним 17/09/20 Чтв 00:28:41 1808613344
>>1807725
Ну, экспертные оценки -- это хорошо. Вероятно, это уважаемые эксперты. Тогда дяди, у которых есть любой разумный бюджет, запрос на 99.999999% надёжность их АЭС или стратегического бомбера, вероятно массово нанимают Хаскеллистам.
И значит, Хаскелл доминирует в этом небольшом по численности, но очень важном и небедном сегменте? Хотя ой, это не так. Всё ещё надёжнее тестировать код на сишечке.
Т.е. ФП не очень-то выходит нужно там, где реально нужна надёжность, и ещё менее нужно для сайтов на вордпрессе. Куда не перекатывайся -- нахуй там нужно ФП, sad but true
Аноним 17/09/20 Чтв 07:46:34 1808730345
>>1797840
Если экран (уарт, диск) отображён в доступную память, то очевидный Си.
Аноним 17/09/20 Чтв 21:21:07 1809390346
>>1808730
>>1806130
Cи не язык, это набор алиасов для асмов.
Аноним 18/09/20 Птн 16:14:35 1810003347
Аноним 18/09/20 Птн 17:33:40 1810119348
>>1809390
Учитывая, что _любой_ компилятор (включая GHC) отображает исходный код в исполняемый -- ваш доёб к Си не валиден.
Аноним 18/09/20 Птн 18:07:21 1810157349
>>1806130
> высокого уровня
> сишка (портабельный ассемблер)

Ну ты понял.
Аноним 18/09/20 Птн 20:37:02 1810234350
>>1810157
Да хоть питон.
Просто объявляешь через FFI функции типа mov и add и пиши свои собственные IO сколько влезет.
Аноним 18/09/20 Птн 20:43:23 1810239351
>>1810157
Ты же понимаешь что любой HLPL это портабельный ассемблер? Просто кто-то даёт байтоебствовать (си, раст, ним), а кто-то нет (хакелл, жс).
Аноним 18/09/20 Птн 22:45:23 1810320352
>>1810157
> No true Scotsman
Cи явл, так как абстрагирован от железа (пока не требуется с ним делать что-то нестандартное). Например, направление роста стека и указатель на него не обязательно знать.
Аноним 18/09/20 Птн 22:47:11 1810321353
> явл
ЯВУ
Аноним 18/09/20 Птн 23:01:59 1810332354
>>1810239
>HLPL
А Haskell - это VHLL.
https://en.wikipedia.org/wiki/Very_high-level_programming_language

>Просто кто-то даёт байтоебствовать (си
Ага, "даёт". В случае с говняшной у тебя никакого выбора нет.

>>1810320
>Cи явл
Today, many programmers might refer to C as low-level, as it lacks a large runtime-system (no garbage collection, etc.), basically supports only scalar operations, and provides direct memory addressing. It, therefore, readily blends with assembly language and the machine level of CPUs and microcontrollers.
https://en.wikipedia.org/wiki/High-level_programming_language
Аноним 18/09/20 Птн 23:39:15 1810350355
>>1810332
"The term VHLL was used in the 1990s for what are today more often called high-level programming languages (not "very") used for scripting, such as Perl, Python, Ruby, and Visual Basic."

Записал Haskell в одну когорту с Перлом и VB. Nice!
Аноним 18/09/20 Птн 23:47:01 1810354356
>>1810350
Ключевое это
with a very high level of abstraction


Бтв, в русскоязычной статье Haskell указан.

К языкам сверхвысокого уровня также часто относят такие современные сценарные и декларативные (в частности функциональные) языки как Python, Ruby, Haskell

https://ru.m.wikipedia.org/wiki/Сверхвысокоуровневый_язык_программирования
Аноним 19/09/20 Суб 01:57:07 1810431357
>>1810354
ключевое то, что это весьма условное разделение, не имеющего никакого качественного смысла.
Аноним 19/09/20 Суб 05:56:48 1810502358
>>1810354
>>1810431
Лучше делить языки на поколения. Вот между 4ым и 5ым поколением языков разница очень ощутима. Вот в пятом поколении почти полное абстрагирование и автоматизация вычислений.
Аноним 19/09/20 Суб 06:04:27 1810505359
Сап програмач, решил научиться писать на хаскелл, но после си и прочих языков довольно не легко дается основа, читал из фака учебник, но слишком дикий объем информации за очень сжатое время, есть ли какое-нибудь другое пособие, где все более менее медленнее разжевывается?
Аноним 19/09/20 Суб 06:08:01 1810506360
>>1810354
Ничего не значащий пердёж в лужу
Аноним 19/09/20 Суб 09:15:11 1810593361
>>1810505
Пробуй разные источники и выбирай наиболее подходящий для тебя вариант.

Основные идеи синтаксиса Хаскеля довольно простые. Другое дело понять принципы построения на них более высокоуровневых конструкций и привыкнуть к ним, чтобы уметь их читать и понимать.

> есть ли какое-нибудь другое пособие, где все более менее медленнее разжевывается?
Можешь попробовать LYAH - Learn You a Haskell for Great Good.

Многие вступительные пособия по Хаскелю совсем ничего не говорят о конкурентности, наверное это потому что они фокусируются на особенностях и отличиях Хаскеля от других языков, но помимо киллер-фич и университетских пэйперов есть ещё и архитектурные вопросы, а также обычные повседневные задачи. Тебе может помочь в этом книга parconc - Parallel and Concurrent Programming in Haskell (можешь сразу начать со второй части).

Ещё случайно наткнулся на книгу The Monad Book, книга хорошо объясняет такие темы как монады, трансформеры монад и т.д.
Аноним 20/09/20 Вск 17:22:45 1811655362
Аноним 20/09/20 Вск 20:28:59 1811881363
>>1810431
Оно лишено смысла только для ниасиляторов, вкатышей и прочей бессмысленной студентоты.

Как бы и Джяватм - хай левел, и Haskell - хай левел, но разница в уровне абстракции очевидна любому, кто писал на них.
Аноним 20/09/20 Вск 20:58:46 1811904364
>>1811881
Действительно. Писать EDSL на жабе то ещё приключение.
Аноним 20/09/20 Вск 21:48:12 1811956365
Проблема хаскеля:

1. Отсуствие вменяемой ide в 2k20.
2. На нем сложно пердолить код. Когда дедлайн неделю назад быстро говнокодить костылями.
Аноним 20/09/20 Вск 21:54:55 1811969366
>>1811956
Ну т.е. когда у тебя неограниченный ресурс времени и ресурсов - как например при написании конпелятора хаскеля, то да, вдумчивое медленное написание кода на хаскеле приводит к отличным результатам. Когда у тебя задача типа конпелятора хаскеля, символьных вычилсений, то использование Хаскеля будет преимуществом. Когда у тебя тырпрайзная императивная лапша с логированием, обработкой всевозможных ошибок, кучей состояния как локального, так и на сервере, то использование Хаселя будет адом.
Аноним 20/09/20 Вск 23:52:26 1812084367
>>1811969
Выходит, что любая бизнес-задача за пределами академической башни из слоновой кости будет адом. Ибо нахуй кому нужен продукт без логов, метрик и прочих side effects, side effects everywhere
Аноним 21/09/20 Пнд 00:18:58 1812109368
>>1812084

Все верно. К тому же очень очень трудно оценивать производительность получившегося кода. Выше по тексту аноны не сошлись во мнении так все-таки будет меморизация или нет в коде из двух строчек. А если таких строчек 2000, 20000? Очень все непредсказуемо. Нужно быть разработчиком компилятора, чтобы точно знать какая сложность будет у кода. Из-за этого невероятно трудно оптимизировать - нужно знать миллиард ньюансов. Часто оптимизации сводятся к unsafe модификациям - можно посмотреть тут https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/ghc-fsharpcore.html. Часто даже яву обгоняет - но по сути это достигается тем что Хаскель за счет unsafe-ов и указателей превращается в корявую Сишечку.

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

До последнего время компиялтор под Винду не генерировал оптимальный IO код. Насколько я помню там не было асинхронного ввода-вывода под винду. Не знаю решили это в последних версиях или нет.

Так-то Хаскель охуенный язык, как творение человеческого разума.По фичам он уделывает любой другой язык программирования. Но он не для того чтобы на нем пердолить, что явлется 99.9 % задач в программировании.
Аноним 21/09/20 Пнд 01:05:21 1812122369
>>1812109
Возражу. Производительный код в целом писать дорого. См. абзац "Complexity" здесь https://matklad.github.io/2020/09/20/why-not-rust.html

То есть, на хаскеле надо именно что ебашить и не думать какое оно там будет по производительности. Большинство энтерпрайзов именно так и делает, максимум компетентности это различать Vector/Map, оптимизировать запросы в БД и делать код который не очень дорого расширять.

> По фичам он уделывает любой другой язык программирования

Ну я бы так не сказал. Хаскель хорош дистинктивностью: только у него весь пользовательский код чистый, а грязь уходит в рантайм, который как бы спрашивает код как чистую функцию, что же сделать следующим шагом. Думаю будущее будет за гибридными языками, где отдельные функции или блоки кода можно размечать как чистые. А тотально выворачивать всю программу в чистую функцию вряд ли настолько нужно и важно.
Аноним 21/09/20 Пнд 02:18:50 1812142370
Стоп. Чистая функция не может иметь скрытых параметров и нет скрытых выходов. Так почему же в хаскелле есть экспешены, которые являются скрытым состоянием стека?
Аноним 21/09/20 Пнд 02:33:08 1812146371
>>1812142
Там вроде бы только стандартная для всех паника есть. А вместо экзепшенов монады.
Аноним 21/09/20 Пнд 05:36:47 1812174372
>>1812142
Как обработать деление на ноль без эксепшенов? А убить дочерний тред? А обработать Ctrl-C?
Варианты есть но они хуевые.
Аноним 21/09/20 Пнд 06:01:22 1812176373
>>1812174
> Как обработать деление на ноль без эксепшенов
Передавать ошибку явно. Как в Goвне.
> А убить дочерний тред?
Сделать кастомные стратегии вычислений. То есть напрямую генерировать стек.

Представь что ты можешь не только указать компьютеру что сделать, но и как это сделать, и применять разные методы решения на одном и том же коде. Причём всё это будет декларативной и иммутабельно.
> А обработать Ctrl-C?
Опять же стратегии.
Аноним 21/09/20 Пнд 07:34:23 1812190374
>>1812142
Ты всё еще срешь себе в штаны не осиливая основную суть хаскеля
Аноним 21/09/20 Пнд 08:16:51 1812199375
15985487194480.jpg 151Кб, 1280x911
1280x911
>>1497436
> В скриптинге попизже петухона
> хаскелл
Аноним 21/09/20 Пнд 08:36:27 1812207376
Аноним 21/09/20 Пнд 09:28:43 1812223377
>>1812207
> тяжёлый компилятор
> скриптинг
Ну ты же понимаешь, что скрипты это про интерпретацию?
Аноним 21/09/20 Пнд 09:49:01 1812239378
>>1812223
Так есть же GHCi и Hugs.
Аноним 21/09/20 Пнд 09:55:51 1812244379
>>1812239
> GHCi
Это же та хрень, которая запускается 5 секунд, да?
Аноним 21/09/20 Пнд 10:10:38 1812252380
>>1812146
Эксепшены в Хаскеле есть.

В книге parconc это хорошо объясняется.

Есть функция throw:

throw :: Exception e => e -> a

Как мы видим из её сигнатуры, она как будто возвращает значение типа а, при этом тип а может быть любым типом.
Как я понимаю, это нужно для таких случаев, когда при ветвлении if-else одна ветвь выполняет работу, а другая выбрасывает эксепшен. Хаскель требует, чтобы обе ветви возвращали значение одного типа, поэтому throw возвращает любой тип.

Действительно, есть в этом что-то императивное.

Отлавливать ошибку можно через catch или через try:

catch позволяет создавать конструкции, похожие на try-catch из императивных языков:

catch :: Exception e => IO a -> (e -> IO a) -> IO a

используя try, можно перейти из неявной (необозначенной типами) обработки ошибок в явную:

try :: Exception e => IO a -> IO (Either e a)

Ну и есть более высокоуровневые функции как onException, bracket, finally.

Есть ещё асинхронные эксепшены, там свои тонкости.
Аноним 21/09/20 Пнд 10:15:24 1812255381
>>1812252
> Хаскель требует, чтобы обе ветви возвращали значение одного типа
А почему кстати? Почему я не могу сделать так: `x == 0 ? "null, yopta" : 1`?
Аноним 21/09/20 Пнд 10:39:48 1812267382
>>1812255
Из https://en.wikibooks.org/wiki/Haskell/Control_structures

Note that in Haskell if is an expression (which is converted to a value) and not a statement (which is executed) as in many imperative languages.[1] As a consequence, the else is mandatory in Haskell. Since if is an expression, it must evaluate to a result whether the condition is true or false, and the else ensures this. Furthermore, <true-value> and <false-value> must evaluate to the same type, which will be the type of the whole if expression.

Аноним 21/09/20 Пнд 10:46:05 1812271383
>>1812255
Если хочешь выполнять (или описывать) действия в ветвях if-else, то обычно они имеют тип IO (), и нужно просто проследить, чтобы обе ветви возвращали IO (). Можно выполнить действия и в конце добавить return (), чтобы тип был какой нужно.

Можно в разных ветвях вызывать разные конструкторы одного ADT. Например, Left и Right для Either, Just и Nothing для Maybe, или написать свои ADT.
Аноним 21/09/20 Пнд 10:50:58 1812275384
>>1812267
> Furthermore, <true-value> and <false-value> must evaluate to the same type, which will be the type of the whole if expression.
И почему это? Что мешает сделать иначе?
Аноним 21/09/20 Пнд 10:52:52 1812277385
>>1812255
>>1812271
В твоём случае можно использовать Either, это будет выглядеть так:

let something = (if x == 0 then Left "null, yopta" else Right 1)

В итоге ты получаешь значение, которое может быть либо строкой, либо числом.
Аноним 21/09/20 Пнд 10:58:47 1812281386
>>1812271
>Можно выполнить действия и в конце добавить return (), чтобы тип был какой нужно.

Хотя, не уверен, нужно ли так делать на самом деле. Если окажется, что () работает как bottom тип в Хаскеле, то можно и не добавлять return ().
Аноним 21/09/20 Пнд 11:01:57 1812286387
>>1812275
> И почему это? Что мешает сделать иначе?
Компилятор не даёт сделать иначе, потому что создатели компилятора так решили.
Аноним 21/09/20 Пнд 11:03:50 1812288388
>>1812176
>Сделать кастомные стратегии вычислений. То есть напрямую генерировать стек.
Ты про evaluation strategies? Как они помогут убить дочерний тред? Они же вроде про ленивость.
Аноним 21/09/20 Пнд 11:46:04 1812319389
>>1812288
> Как они помогут убить дочерний тред?
Если модель вычислений - дерево (а оно так и есть при параллельных вычислениях), то можно просто абортировать тред, как в случае с эксепшенами.
Аноним 21/09/20 Пнд 11:55:07 1812331390
>>1812277
А компилятор сам не может тип вывести что-ли? Очевидно что `if x == 0 then "null, yopta" else 1` имеет тип `String || Number`, зачем засорять код лишними консрукторами?
Аноним 21/09/20 Пнд 12:01:08 1812336391
>>1811969
Ой да шо вы пиздите. На хаскеле можно писать эффекты, на хаскеля нельзя писать побочные эффекты.
И по сути, в энтерпрайзе с dependency injection все то же самое. Системы эффектов в хаскеле решают те же задачи, что и di в шарпе.в шарпе ты описыввешь интерфейс с необходимыми эффектами, в хаскеле тайпклас. В результате шо там, шо там, одни инстансы юзают для юнит тестов, другие для реальной работы Единственное отличие - на шарпе ты можешь в любой функции вызывать сырой IO говнокод и никто это не заметит, а в хаскеле это будет видно по сигнатуре функции.

Я вообще понял, что намного важнее качество кода и его стурктура, чем язык, никакое фп тут ни при чем. возможно, это неправда для го или динамикоязыков, но я на них не собираюсь писать Да, на джаве надо ебаться с наллами хотя есть Optional<>, да, тут нет красивых линз и сложно писать свой dsl. Но кому это всралось, когда ты пишешь просто вебсайт, с чем справляется что хаскель, что джава, но на джаву есть тонна либ, комьюнити и поддержка? Поэтому хаскель и непопулярен. А еще потому что оброс тонной мемов о страшных монадах и эндофункторах.
Аноним 21/09/20 Пнд 12:54:32 1812396392
>>1812331
Ты придумал новый тип "||" принимающий два параметра, по сути то же самое, что Either, только хочешь, чтобы компилятор сам неявно подставлял его куда надо.
Не знаю, почему этого неявного преобразование нет. Может кто-то решил, что явное лучше неявного.
Аноним 21/09/20 Пнд 13:21:45 1812422393
>>1812319
Ты говоришь о том, чтобы создавать структуру данных, стратегию, из них получить структуру, обёрнутую в монаду Eval, а потом запустить её через runEval?

Звучит как что-то слишком экзотическое. Есть что-то аналогичное в других языках?
Аноним 21/09/20 Пнд 18:03:38 1812714394
>>1812319
> то можно просто абортировать тред
Каким образом ты абортируешь тред, имея в распоряжении две примитивы rpar и rseq? Они влияют на параллельность, а не на абортирование треда.
Аноним 21/09/20 Пнд 18:20:52 1812726395
>>1812714
> Каким образом ты абортируешь тред
В модели укажу, когда абортировать.
>>1812422
> Есть что-то аналогичное в других языках?
В логических языках программирования такое повсеместно встречается. Связано это с многими фактами. Иначе просто невозможно описать предикаты высшего порядка (такие как findall, forall).
Аноним 21/09/20 Пнд 18:24:21 1812730396
>>1812396
> Ты придумал новый тип "||" принимающий два параметра
Это логическое ИЛИ, вообще-то. Зачем вообще нужны типы, когда есть предикаты? (Почти) любую вещь можно доказать с помощью предиката. Зачем создавать лишние абстракции?
Аноним 21/09/20 Пнд 18:38:58 1812736397
>>1812726
>В модели укажу, когда абортировать.
Что это за модель такая? Не понимаю, если ты заранее знаешь, какой тред ты собираешься абортировать (а ты должен это знать, чтобы указать в модели, верно?), то зачем его тогда запускать?
Аноним 21/09/20 Пнд 18:48:33 1812745398
>>1812730
Предикаты как альтернатива типам - это что-то новое, в первый раз такое слышу.

Не представляю язык с предикатами вместо типов. Что это за язык такой?

Ну а вообще, типы (принадлежность к типу) можно считать разновидностью предикатов, которые проверяются во время компиляции.

Обычно предикаты проверяются во время исполнения (require в scala, guard в хаскеле, assert).
Если хочешь, чтобы предикаты проверялись во время компиляции, выражаешь их с помощью типов.

Можешь привести примеры предикатов, которые проверяются во время компиляции, но не являются типами?
Аноним 21/09/20 Пнд 19:07:36 1812765399
>>1812745
Name str = match str /^[A-Z][a-z]+/

Проверяем данный предикат на каждом терме Name, каждый раз, когда подгружаем модуль / выполняем eval.

Опиши Name в системе типов.
Аноним 21/09/20 Пнд 19:18:24 1812779400
>>1812765
Такие вещи проверяются во время исполнения, в системе типов проверку можно выполнять в конструкторе или в какой-то функции.

Это обычный предикат, который проверяется во время исполнения. А я просил пример предиката, который проверяется во время компиляции и не является типом.
Аноним 21/09/20 Пнд 19:20:41 1812783401
>>1812736
Можно запускать тред ради побочных эффектов, но в описываемой тобой модели их нет. Или есть?
Аноним 21/09/20 Пнд 19:21:49 1812785402
>>1812779
> Это обычный предикат, который проверяется во время исполнения.
А кто сказал, что он будет проверяться во время исполнения? Мне ничто не мешает проверять его на этапе компиляции. Особенно если я пишу на Лиспе или Прологе.
Аноним 21/09/20 Пнд 19:23:34 1812786403
Ну и хуйня у динамических петушков в голове.

>когда подгружаем модуль / выполняем eval.
То есть можно попрощаться с нормальным статическим анализом.

>выполняем eval
Который запускает ракету с ядерным зарядом.
Аноним 21/09/20 Пнд 19:24:31 1812788404
>>1812736
> Что это за модель такая?
Ситуации бывают разные. Иногда бывают сбои, и тред нужно немедленно абортировать. Описывать это в функциях было бы не чисто, а вот сделать абстракцию над процессом вычислений вполне чистое дело.
Аноним 21/09/20 Пнд 19:25:10 1812791405
>>1812785
Разворачивание макросов =/= компиляция, петушок.
Аноним 21/09/20 Пнд 19:26:27 1812793406
>>1812786
То есть у долбоебов в голове не существуют такие языки, которые проверяют код на этапе компиляции, но кроме всего прочего поддерживают метаинтерпретатор(eval).
Аноним 21/09/20 Пнд 19:27:13 1812795407
>>1812791
А проверять код можно даже без компиляции. Спорим?
Аноним 21/09/20 Пнд 19:42:21 1812804408
>>1812795
Разумеется, тайпчекер можно запускать и без компиляции.
Аноним 21/09/20 Пнд 19:43:59 1812806409
>>1812785
Как я понял, он принимает на вход строку. Почему? Если тебе заранее во время компиляции известны все варианты строк, которые могут прийти, то можно перечислить их в каком-нибудь enum-е, и получишь проверку предикатов через типы.
Если все варианты строк заранее не известны, выходит, проверка осуществляется во время исполнения.
Аноним 21/09/20 Пнд 19:52:07 1812810410
>>1812788
Как это будет выглядеть? Ты не знаешь заранее, в каком узле дерева будет сбой. Как ты в модели укажешь абортирование при сбое?
Или у тебя дерево состоит из IO экшнов? Так мы опять возвращаемся к эксепшенам и прочей императивщине.
Аноним 22/09/20 Втр 07:16:14 1813063411
>>1812806
> Почему? Если тебе заранее во время компиляции известны все варианты строк, которые могут прийти
Неизвестны. Ты же понимаешь что имя может быть АБСОЛЮТНО любым.
Аноним 22/09/20 Втр 07:22:49 1813065412
>>1812810
> Ты не знаешь заранее, в каком узле дерева будет сбой
Нудк треды создаются моделью. И работают в соответствии с этой моделью.
Аноним 22/09/20 Втр 12:42:24 1813163413
Так-то стратегии не имеют осoбого смыслa вне лoгического программирования где код очень абстрагирован от реальных вычислений на машине, и где стратегии как раз и задают прaвильный путь выпoлнения кoда. Решение в глубину, рeшение в ширину, парaллельное решение, вот это всё.

В ФП роль стратегий берут на себя монады, говоря как выполнять код.
Аноним 22/09/20 Втр 14:03:23 1813244414
>>1813065
>>1813163
Я так понял, что стратегии работают там, где нужно распараллелить вычисления, когда каждое из них изолировано от окружающего мира, вычисления не добавляются и не удаляются динамически, а задаются моделью, которую можно всю вычислить последовательно.

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

А есть вещи, которые ты в принципе не можешь вычислить последовательно, тогда уже ты не можешь воспользоваться стратегиями. Правильно?
Аноним 22/09/20 Втр 17:21:06 1813370415
>>1813244
> Я так понял, что стратегии работают там, где нужно распараллелить вычисления
Не совсем. Стратегии удобны при недетерменированных вычислениях. В ФП нет смысла в стратегиях, ибо программист сам руководит детерменизмом.
Аноним 23/09/20 Срд 00:28:59 1813702416
Возможно ли создать от и до UI без стейта(чисто по ФП)?
Аноним 23/09/20 Срд 00:40:05 1813708417
3656089600.jpg 15Кб, 464x384
464x384
>>1812786
> Который запускает ракету с ядерным зарядом.
У военной техники память 16кб. Так что оставьте свои влажные фантазии о том что Хаскелле где-то там используется в серьёзных отраслях.
Аноним 23/09/20 Срд 07:30:43 1813811418
>>1813702
Если эмулировать пользователя функцией, то почему нет.
Аноним 23/09/20 Срд 07:51:51 1813817419
15947784405160.png 330Кб, 1048x1079
1048x1079
>>1813811
> Если эмулировать пользователя функцией,
В большинстве случаев эмулировать не приходится
23/09/20 Срд 13:28:15 1814076420
>>1813708
Битордик палится на использовании смищных картинок. Окропил уриной манькин ротешник. Забери смищные картинки и уёбывай обратно в /b/ыдлятню, откуда ты имел неосторожность вылезти.
Аноним 23/09/20 Срд 13:29:40 1814077421
>>1813708
Дебильность — легкая степень малоумия (IQ от 50 до 75). Её трудно отличить от психики на нижней границе нормы. Поведение дебилов достаточно вменяемо и самостоятельно, речь развита. Поэтому дебильность замечается не сразу, а обычно в процессе начального обучения. В подростковом возрасте, когда дебильность особенно проявляется, обнаруживаются дефекты в абстрактном мышлении. Дебилами все понимается буквально, переносный смысл пословиц, метафор не улавливается.Лица, страдающие дебильностью, овладевают преимущественно конкретными знаниями, усвоение теоретических им не дается.
Аноним 23/09/20 Срд 13:58:23 1814116422
>>1813708
>У военной техники память 16кб

Военная техника - это не только анало-говнеты и прочие попытки удержать загибающиеся совковые производства клонов западных микросхем 70х-80х от превращения в склады для Ашотов.

https://www.flir.com/applications/government-defense/

https://gdmissionsystems.com/products/airborne-systems/advanced-mission-computer


И даже у анало-говнетов 16кб можно встретить разве что в рухляди со складов.

http://mniirip.ru/sites/default/files/articles/katalog_elektronnogo_napravleniya_rpkb.pdf
Аноним 23/09/20 Срд 15:01:25 1814207423
Поясните за практическую ценность языка. Где он сейчас юзается и где будет юзаться?
Аноним 23/09/20 Срд 15:34:37 1814250424
>>1814116
Ну вот ты привёл интересные проекты. И что, много там хаскелля, или как обычно нахуй не нужен?
Аноним 23/09/20 Срд 17:12:15 1814346425
>>1814207
Для написания динамических оперденей и ассоциативных кластеров метапарадигм.
23/09/20 Срд 17:12:36 1814348426
>>1814207
Сынок, ты не понял. Это — борда для обсуждения ковариантных функторов, анафорических макросов, пандорических захватов, кластеров метапарадигм, катаморфизмов, эпиморфизмов, анаморфизмов, параморфизмов, ненужности математики, наконец. Никого здесь твои слесарские проблемы не волнуют. Ваш жалкий практический земной мирок не нужен. Съеби.
Аноним 23/09/20 Срд 17:15:31 1814354427
>>1814346
>>1814348
Да-да, заебись, я вижу вы тут с буфером обмена дружите. Хекель этот ваш для чего нужен?
23/09/20 Срд 17:56:17 1814407428
>>1814354
Ты в глаза ебёшься? Тебе ответили выше, можешь идти нахуй.
Аноним 23/09/20 Срд 18:33:13 1814463429
>>1814207
Используется для написания компилятора языка программирования Haskell.
В будущем, будет использоваться для написания компилятора языка программирования Haskell.
Аноним 23/09/20 Срд 19:12:14 1814486430
Ковыряю хачкиль потихоньку, читаю Real World Haskell, и там задача на реализацию алгоритма Грэхема, так я и без того, блядь, тупой, но ещё и пытаться всё писать в функциональном стиле и думать иначе причиняет мне мозговую боль.
Надо было лучше байтойобство изучать.
Аноним 23/09/20 Срд 20:39:52 1814512431
>>1814463
Когда самый крупный и значимый проект на языке -- это его же компилятор, начинаешь понимать новые грани термина "самоподдув"
Аноним 23/09/20 Срд 23:23:59 1814633432
>>1814512
Но GHC со всеми расширениями это реальный мастерпис, хуй знает что сложнее можно придумать.
Аноним 24/09/20 Чтв 11:23:50 1814911433
>>1812810
>IO экшнов
У монады IO нет экшнов
Аноним 24/09/20 Чтв 12:15:31 1814960434
>>1814911
Экшном я назвал экземпляр монады, не знаю как правильно называется, но думаю ты понял, что я имел в виду.
Аноним 24/09/20 Чтв 12:19:51 1814965435
Почему бы не избавится от сайд-эффектов путем самомодификации? Есть некоторый список действий, которые исполняется над AST во время выполнения. Когда этот список заканчивается, изменения вступают в силу, и программа просто "переходит на новые рельсы".
24/09/20 Чтв 17:20:42 1815246436
>>1814965
Лиспопетушок, тут не подают.
Аноним 24/09/20 Чтв 20:59:14 1815464437
>>1814965
>>1815246
Значит это что-то из мира Лиспа? Интересно, а в Closure есть такое? Хотя, JVM наверное не позволит на ходу модифицировать AST.
Аноним 24/09/20 Чтв 21:13:37 1815484438
>>1814463
Напомните, Хаскель уже перестал использовать сторонние компоненты для самоклопиляции? Когда-то он прогонялся через перл и сс. Сейчас llvm?
Аноним 24/09/20 Чтв 21:52:23 1815526439
>>1813702
А что в UI есть стейт!?
Аноним 25/09/20 Птн 13:06:41 1815800440
image.png 572Кб, 1280x720
1280x720
Ебаные вы, блядь, все пидоры! Как выйти нахуй из интерпретатора? Да, это очень смешно повыебываться над вкатывальщиком. А может я дохуя умный и все осилю, но не СЕЙЧАС? Не приходило в голову долбоебам? Как выйти, сука?
Аноним 25/09/20 Птн 13:08:10 1815801441
>>1815800
сука, 15 минут искал ответ, наконец нашел :quit
25/09/20 Птн 13:13:40 1815808442
>>1815800
Ты на винде? ^d (Ctrl + D) - выйти из GHCi, ^c - выйти принудительно (если решил бесконечный список оценить).
Аноним 25/09/20 Птн 14:40:19 1815857443
index.png 6Кб, 290x174
290x174
Аноним 25/09/20 Птн 15:09:57 1815868444
>>1815464
> Значит это что-то из мира Лиспа?
Ну, обычно в Лиспе так не забываются. Да и AST редактируют только во время макро-экспажена. А вот в Прологе да. Свобода во все поля. И кстати, пересчитывать программу, когда данные(=программа) мутируют не нужно. В Прологе все завимости будут и так считаться, ибо там данные ничем не отличаются от кода.
data(c, C) :- data(a, A), data(b, B), C is A + B.
:- assertz(data(a, 5)).
:- assertz(data(b, 6)).
Аноним 25/09/20 Птн 21:44:53 1816305445
>>1815800
Тебе категорически запрещено запускать вим.
Аноним 26/09/20 Суб 00:59:01 1816420446
>>1816305
vim мой любимый редактор, никаких проблем с ним
Аноним 26/09/20 Суб 01:07:56 1816424447
>>1816420
Так мог бы тогда в ghci просто :q написать, все просто.
Аноним 26/09/20 Суб 15:05:09 1816737448
>>1814633
Так полностью согласен: реально сложная задача, при том идеально подходит для языка: сайдэффекты минимальны, почти чистая функция, хотя и очень сложная, из одних данных в другие.

Но заметим, даже для этого спектра задач "написание компилятора" хаскелль не получил какой-то популярности, т.е. реально самоподдув.
Аноним 26/09/20 Суб 17:31:51 1816888449
>>1816737
Но на хаскеле написано немало компиляторов.
Аноним 26/09/20 Суб 20:49:21 1817008450
image.png 54Кб, 637x516
637x516
Не осилил продолжения, видимо хаскель не мое и придется до конца жизни на мутабельном ооп писать
Аноним 26/09/20 Суб 21:00:41 1817015451
>>1817008
Какое продолжение ты не осилил?
Аноним 26/09/20 Суб 21:08:48 1817022452
Аноним 27/09/20 Вск 20:54:56 1817720453
>>1816888
Расскажи, реально интересно
Аноним 27/09/20 Вск 21:13:24 1817734454
Вот я поигрался с функторами, в том числе аппликативными, а также монадами и трансфомерами монад. Что дальше мне изучать?
линзы и призмы? тардис монаду? монадологию Лейбница? Накидайте список баззвордов короче, которые стоит освоить, чтобы быть модным борщехлёбом.
Аноним 28/09/20 Пнд 09:32:34 1817938455
>>1815868
В прологе за такую Швабодку приходится платить неэффективностью кода, который сам себя модифицирует, и чуть меньшей эффективностью и заметно большей сложностью системы в целом.
Помню смешной sbprolog, где retract занимался декомпиляцией, чтобы восстановить фразу.
Аноним 28/09/20 Пнд 09:36:11 1817942456
>>1817022
Но это просто дополнительный аргумент к функции, который надо вызвать вместо возврата.
Аноним 28/09/20 Пнд 17:38:42 1818282457
image.png 129Кб, 1071x769
1071x769
>>1817942
Но это еще и монада. Конкретно увидев это я совсем сдался.
Аноним 28/09/20 Пнд 17:55:20 1818285458
Мимопроходил и решил зайти в ваш тред. Полистал.

Пиздец, как вы это пишете вообще. Какие то монады, говнады, выражения странные, лямбды через строчку, синтаксис ебейший.
Аноним 28/09/20 Пнд 18:03:20 1818292459
>>1818285
А я зашел, стало любопытно. Но бля... потратить на это все времени уйму надо, а результатом будет только почем и уважение от анона, а мне кушать надо... пошел и дальше web-development надрачивать
Аноним 28/09/20 Пнд 18:24:40 1818304460
>>1817938
> В прологе за такую Швабодку приходится платить неэффективностью кода, который сам себя модифицирует
Неэффективность пролога состоит в том, что программист очень сильно абстрагируется от железа и реальных вычислений в целом.
Аноним 28/09/20 Пнд 18:44:14 1818316461
>>1818282
>википедиевый пример императивщины на монаде
>это еще и монада
Аноним 28/09/20 Пнд 18:45:47 1818318462
>>1818316
Что сказать хотел чел
Аноним 28/09/20 Пнд 18:48:48 1818321463
>>1818318
Что тебе там не понятно?
Аноним 28/09/20 Пнд 18:50:01 1818322464
>>1818321
Как делать хуйню типа пикрила например
Аноним 29/09/20 Втр 09:47:56 1818643465
>>1817734
Alternative, MonadPlus, Free Monad, Arrow.

На первое время тебе хватит, потом приходи ещё.
Аноним 29/09/20 Втр 13:29:54 1818787466
Аноним 09/10/20 Птн 20:27:18 1826949467
Bump
09/10/20 Птн 22:11:26 1827029468
>>1826949
Треду больше года. И ему настолько хуёво, что приходится бампать. Пора бы задуматься.
Аноним 10/10/20 Суб 01:26:14 1827115469
>>1827029
Мертвый тред мертвого языка
Аноним 10/10/20 Суб 17:56:01 1827428470
Как же плохо, когда интель и гугль не проталкивают твой язык.
Аноним 10/10/20 Суб 18:42:00 1827454471
>>1827428
Гуглу надо, чтобы хомячки могли осилить.
Аноним 10/10/20 Суб 20:57:14 1827547472
>>1827428
Когда даже Dart нужнее, чем твой язык.
Аноним 24/10/20 Суб 22:04:24 1838973473
За монаду тэйт пояснить и разъяснить ктонить может? ппц чёт торможу
Аноним 24/10/20 Суб 22:04:50 1838974474
Аноним 25/10/20 Вск 03:09:53 1839116475
>>1838973
>>1838974
Т.к. ты не задал конкретного вопроса, привожу краткое пояснение.

Стейт это про функцию, которая получает состояние и возвращает какой-то результат и изменённое состояние.

func :: s -> (a, s)

Если обернуть эту функцию в какой-то тип и сделать этот тип монадой - получишь монаду стейт. Дальше создаешь функции для чтения и изменения состояния get и put.

> ппц чёт торможу
в каком месте ты тормозишь?
Аноним 25/10/20 Вск 08:38:01 1839151476
>>1839116
> Если обернуть эту функцию в какой-то тип и сделать этот тип монадой - получишь монаду стейт.
Надо уточнить, что оборачиваешь не какую-то конкретную функцию, а тип функции.
Аноним 25/10/20 Вск 16:36:45 1839382477
>>1839116
>в каком месте ты тормозишь?
Вот тут. Что это за состояние(в чем оно выражено/чем представлено)?
Аноним 26/10/20 Пнд 11:10:49 1839965478
>>1839382
>Что это за состояние
В школе на алгебре переменные проходили? Ну так вот, если кратко, то состояние - это всё что угодно, что можно выразить через переменные.

> в чем оно выражено/чем представлено
Состояние может быть выражено/представлено любым значением, а в Хаскеле у значений есть тип, поэтому ответ такой: значениями и их типом.
Аноним 26/10/20 Пнд 22:18:21 1840553479
>>1839965
Спасибо. Вроде дошло. немного
Аноним 28/10/20 Срд 05:56:51 1841729480
Здорово. Хочу немного выучить хаскель, чтобы:
- Удовлетворить своё любопытство
- Не быть лохом, когда пацаны обсуждают что-то функциональное возле кулера, а мне не то, что сказать нечего, я не понимаю ничего даже
- У знакомого есть вакансия, где неплохо бы немного знать хаскеля
Сейчас я из функционального знаю только что такое лямбды в пайтоне и что есть мап, редюс и фильтер.
Мне лучше читать SICP чтобы врубиться в функциональную терминологию и это вот все, а потом учить хаскель, или есть сразу книга по хаскелю, где написано всё для тех, кто вообще раньше с функциональщиной не связывался?
Аноним 29/10/20 Чтв 10:11:01 1842696481
>>1841729
Из того, что знаю:
Есть LYAH - Learn you a Haskell for great good.
Про монады есть книга The book of monads, автор Alejandro Serrano Mena. Примеры на Хаскеле и Scala.
Аноним 01/11/20 Вск 18:53:42 1845627482
Изучаю сейчас ФП на JS. Но спрошу тут. Как быть с вложенностью монад? Понятно если у нас несколько Maybe я просто применю join. Но если у нас структура типа такой maybe(either(maybe(a))). Как это все объединить? И вообще считается ли полная распаковка монад до значений хорошей практикой?
Аноним 01/11/20 Вск 18:56:06 1845629483
>>1845627
> монады
> жс
Зачем? У JS неленивые вычисления без системы типов.
Аноним 01/11/20 Вск 19:04:50 1845634484
>>1845629
Ну вообще через каррирование функций можно сделать вычисления ленивыми. Ну кое какие типы есть. Есть целые либы под ФП на JS, так что там достаточно для этого функционала. А во вторых не я язык выбираю, пилю небольшой проект на работе решил в нем ФП попробовать
Аноним 01/11/20 Вск 19:33:55 1845648485
>>1845634
Вообще ФП ахуенно. Сначала видел много неудобств. Но когда втянулся, начал доканчивать свои проекты на ООП, начал понимать, что все слишком сложно, и на ФП проще.

> Ну вообще через каррирование функций можно сделать вычисления ленивыми.
Таки да. Можно к тому же эмулировать стейт через каррипование.
start(
entity ("id0") (Player),
set ("id0") ("x") (10)
set ("id0") ("y") (10)
)
Где:
start (... Function) -> State
entity (String) (Component) (State) -> State
set (String) (String) (State) -> State
Аноним 01/11/20 Вск 22:03:10 1845812486
>>1845648
Ну надеюсь оправдает себя, на js даже неплохое руководство нашел, последнюю главу дочитываю mostly-adequate-guide-ru
Аноним 02/11/20 Пнд 06:28:17 1845959487
>>1845629
> Зачем? У JS неленивые вычисления без системы типов.
Это обязательные условия для использования монад? Огласите полный список, пожалуйста.
Аноним 02/11/20 Пнд 06:30:01 1845961488
>>1845959
Монады нужны только для того, чтобы упорядочить вычисления. А без системы типов монады то и не выразишь.
Аноним 02/11/20 Пнд 14:37:31 1846208489
>>1845627
А что не в жс треде?

> у нас структура типа такой maybe(either(maybe(a))). Как это все объединить?
использовать pipe оператор
> either(maybe(a))
> maybe(either(..))
Это все можно флэтить, в зависимости от того, какое значение тебе нужно в процессе и какое на выходе. Вообще, должны быть операторы типа either.fromMaybe/maybe.fromEither

> И вообще считается ли полная распаковка монад до значений хорошей практикой?
it depends, но вообще нет. Есть же фолд.
Аноним 06/11/20 Птн 18:05:50 1849794490
image.png 8Кб, 354x117
354x117
Ух ебать блять
Аноним 06/11/20 Птн 18:10:45 1849800491
>>1845961
>Монады нужны только для того, чтобы упорядочить вычисления. А без системы типов монады то и не выразишь.
Ты вообще всё перепутал
Аноним 06/11/20 Птн 19:34:57 1849884492
>>1849794
Ну да, позорно, что-то уровня middle джависта в ДС/ДС2
Аноним 09/11/20 Пнд 19:40:06 1852082493
>>1841729
Этот вопрос лучше задать в майлисте Haskell. Книжки по Haskell постоянно пишутся, в т.ч. и на русском, но мы их не читаем, т.к. уже давно вкатились на всякиз LYAH и RWH, но это крайне древнее и скучное чтиво, не отражающие современных фишек языка.
Аноним 09/11/20 Пнд 19:40:33 1852083494
>>1845627
>Как быть с вложенностью монад
Не допускать. maybe(either(maybe(a))) - очень плохой пример и некоторые быдлокодеры реально так пишут, поверь, я знаю, о чём говорю.

Давай его разберём.

Тут, скорее, вызов функции, которая возвращает результат либо пустое значение, затем Either, чтобы сигнализировать об ошибке, затем снова Maybe, наложенная каким-то следующим слоем обработки данных.

Что можно сделать? Во-первых, убрать Either. В языке и так есть исключения для сигнализирования об ошибках, просто используй исключения. Остаётся 2 Maybe. Но вызывающей стороне пофиг, в каком слое не оказалось значения. Ей вообще лучше ничего не знать о внутренней структуре, поэтому просто схлапываем в один Maybe.

Потом думаем еще раз, является ли Nothing нормальным результатом? Если это, например, функция получения значения из кеша, то оставляем, пусть возвращает Nothing, если значение не найдено. Но если это функция получения пользователя из базы данных, то наверняка лучше просто возвращать пользователя, или кидать исключение, если он не найден. Получается, что мы просто возвращаем a.

Наконец, осознаём, что наша функция скорее всего имеет какие-то побочные эффекты, поэтому будет IO a. Но еще она работает в каком-то окружении, поэтому будет ReaderT MyYobaEnvironment IO a. Но еще мы не хотим жеско зашивать окружение для возможности использования различных окружений, тестового и продуктового, например. И не хотим показывать функции, что она ранится в ReaderT MyYobaEnvironment IO, потому что это опять же детали реализации. Поэтому определяем кастомную монадку MyYobaMonad, содержащую все необходимые сервисы, и итоговую сигнатуру функции f :: (MyYobaMonad m) => m a. В результате монадка используется только для контроля окружения и побочных эффектов.

Практические рекомендации как использоать монадки в приложениях здесь https://www.fpcomplete.com/haskell/library/rio/ для Хаскеля, здесь https://degoes.net/articles/zio-environment для Скалы.
Аноним 09/11/20 Пнд 20:18:40 1852111495
>>1845959
>Это обязательные условия для использования монад?

В целом - да. Обрати внимание, в своём предыдущем посте я писал только про сигнатуры функций. Т.е. он как-бы весь про типы. Какой профит городить конструкции, которые на 99% про типы в безтиповом языке? Ничего не получишь, да еще и синтаксисом наебёшься.

>Огласите полный список, пожалуйста.

1. Чистота. Хотя бы номинально. Посмотри на дизайн в ZIO, там вся грязь заворачивается в монадки, потому что если мешать чистый и грязный код втупую, профиты резко улетучатся. Но ладно ZIO, там уже за тебя всё завернули, а если ты берешь обычный язык с сайдэффектами, ты что ли будешь самостоятельно писать врапперы для всех библиотечных функций?

2. Ленивость. Вот Scala - не ленивая, и какая-нибудь конструкция на ZIO вроде for { _ <- putStrLn(s"Hello ${yoba.toString()}") } yield () кидает фатальную ошибку, если yoba.toString() выкинет исключение. Приходится писать что-то вроде for { q <- ZIO(yoba.toString()); _ <- putStrLn(s"Hello $q") } yield ().

3. Оптимизация хвостовых вызовов. Для реализации flow-control монадок. Потому что внутри они выглядят примерно так: newtype M m a = M { unM :: forall r . (a -> m r) -> m r } И биндинг примерно так: M ma >>= fb = M $ \k -> ma $ \a -> unM (fb a) k, но это будет работать только если в языке есть оптимизация хвостовых вызовов. Собственно всякие ZIO потому и существуют, что в Scala оптимизации хвостовых вызовов нет и прходится изрядно поебаться, чтобы сделать flow-control монадку.

4. Специальный синтаксис. Это for { q <- ZIO(yoba.toString()); _ <- putStrLn(yoba) } yield () - пиздец какой отстой по сравнению с этим: putStrLn (show yoba)
Аноним 10/11/20 Втр 11:04:31 1852456496
Cf5Or90cca8.jpg 28Кб, 450x337
450x337
>>1827029
>>1827115
Это не Хаскель сдох, это /pr сдох. Ссыкуха-модер всех рассадил по номерным тредам и трёт любые PLT-срачи. А нахуй мне сидеть в треде по Хаскелю? Помогать школьникам делать домашки? Так есть Stack Overflow, есть Хабр, блядь. Да даже на Хабре можно написать более провокационную статью. Нслаждайся беззубой хуйнёй в которую превратился pr и обсуждай домашки по php и собеседования в номерных тредах.
Аноним 10/11/20 Втр 11:46:18 1852477497
>>1852111
Спешите видеть нововыденный тип хаскель-макак
Аноним 10/11/20 Втр 14:31:37 1852613498
>>1852456
> и трёт любые PLT-срачи
Что за плт срачи? Обычные срачи не трет, вон даже отдельный тред для срачей есть.
Аноним 10/11/20 Втр 19:50:50 1852891499
>>1852477
Мне кажется ты даже половины не понял из написанного.
Аноним 10/11/20 Втр 21:17:46 1853020500
>>1852891
>конструкции, которые на 99% про типы
>мешать чистый и грязный код
>Ленивость
>Чистота. Хотя бы номинально
>это будет работать только если в языке есть оптимизация хвостовых вызовов
Бинго нихуя не понявшей макаки научившейся тыкать хаскели
Аноним 11/11/20 Срд 06:20:01 1853249501
>>1845959
> Это обязательные условия для использования монад?
Да. Как ты в языке монады выразишь, если типов нет?
Аноним 11/11/20 Срд 13:32:33 1853457502
Аноним 11/11/20 Срд 17:16:25 1853691503
Что читать после LYHFGG?
Аноним 11/11/20 Срд 21:03:41 1853895504
Аноним 11/11/20 Срд 21:25:47 1853904505
Аноним 14/11/20 Суб 09:56:03 1855826506
image.png 21Кб, 285x130
285x130
САМЫЙ МЕЙНСТРИМНЫЙ ШЕБ ЙОБАФРЕМВОРК ОТ ТОПОГО ШТАНГИСТА
@
УПДЕЙТ ДО 1.6
@
ДОКОКНИГА ЗАПАЗДЫВАЕТ НО СНОСКА НА САЙТЕ ВНУШАЕТ НАДЕЖДУ
@
ПРОШЛО 2 ГОДА
@
АФТОР ДОПИСАЛ
@
КНИГУ ПО РАСТУ
Аноним 17/11/20 Втр 00:53:36 1858062507
>>1853020
Ты потыкай любой другой стиральный порошок и потыкай в Хаскель. Сразу поймешь, в чем разница. Или не поймешь, если не программироал.
>>1853691
Начинай с The Haskell School of Expression дальше читай Typeclassopedia (http://www.haskell.org/wikiupload/8/85/TMR-Issue13.pdf), дальше статьи по ссылкам в тайпклассопедии, викикнигу (http://en.wikibooks.org/wiki/Haskell), а точнее отдельные главы. Ну и вики на haskell.org.
Некоторые няшечки могут посоветовать Душкина (беги от этой книги, как от чумы), Грема Хаттона или "Изучи себе хаскель во имя великой справедливости" - не слушай их, только напрасно потратишь время.
Ну а после изучения нормального языка программирования уже сам решишь, нужен ли тебе этот самый питон.

Аноним 17/11/20 Втр 16:49:51 1858499508
Можете пояснить зачем такой зоопарк монад? Maybe, Either, Task, и др. вполне можно заменить одной монадой, той же task
Аноним 22/11/20 Вск 12:07:51 1862601509
Аноним 02/12/20 Срд 23:54:29 1871422510
Дошел до десятого задания тут:
https://www.seas.upenn.edu/~cis194/spring13/lectures.html

И даже не знаю с чего начать. Смотрю солюшен с гитхаба вижу буковки и не понимаю что они делают.

Что делать? Посмотреть гайды с ютуба недельку или хаскель не для меня?
Аноним 11/12/20 Птн 21:38:36 1878417511
>>1579181
Контравариантный функтор - не функтор. Просто название такое.
Аноним 11/12/20 Птн 22:55:59 1878470512
>>1703220
Лучше поздно, чем никогда. Наверное.

В качестве "случаев" для сравнения case могут выступать только конструкторы.

> case foo of
> 3 -> a -- "" - конструктор пустой строки
> x -> x * 2 -- x - не конструктор, так что сравнения не происходит
можно трактовать как
> если foo = "" - верни a
> если foo - что-то другое, то назовём это 'другое' буквой х и умножим на 2

Так вот s' в том case выражении - присвоение результата 'dropWhile Char.isSpace s' идентификатору s', если этот результат не "замэтчился" в вышеуказанных случаях.

Аноним 11/12/20 Птн 23:45:43 1878499513
>>1858499
Затем, чтобы типобезопасность была.
Хочется безопасно взять голову списка: `safeHead :: [a] -> Maybe a`
Почему не `[a] -> Either Exception a`? А нафига. Нам и так известно, что она может пофейлиться, и даже точно известно, на чем именно.

Maybe через Either с допиливанием (до бифунктора, битраверсабла) выразить можно, наоборот - нельзя.

Едем дальше. Task и Either.

Чувствуется разница между `giveMeUserPlease :: Login -> Task User` и `giveMeUserPlease :: Login -> Task (Either UserNotFoundError User)`?
Этот Task может пофейлиться и это вынесено на уровень типов, всё явно.
Так что теперь забыть обработать ошибку инструментарием тайпклассов уже не получится.

Task и Maybe
`lastUserMessage :: User -> Task (Maybe Message)` против `lastUserMessage :: User -> Task Message`.
Всё бы хорошо, но нам вовсе не факт, что нужно, чтобы в случае, если сообщения нет то всё фейлилось.
В своём красивом домене мы вполне можем ожидать того, что сообщений нет, и штатно обработать этот случай, не как ошибку.
Но если скрыть Maybe под капотом, то начинаются танцы с тайпклассами, и типобезопасность уходит от нас.
Аноним 13/12/20 Вск 23:04:08 1879705514
Аноним 23/12/20 Срд 20:52:18 1888613515
Аноним 31/12/20 Чтв 13:10:02 1896712516
>>1888613
Какой-то словесный понос по ссылке.
Аноним 19/01/21 Втр 13:09:37 1915092517
Почему хаскелисты такие слесари?

Вот чем слесарь отличается от инженера. Инженер проектирует, а слесарь выполняет. Инженер должен что-то придумать, а чтобы придумать, надо думать уметь. А слесарь не должен думать, он должен уметь пользоваться инструментом, и ни в коем слечае не думать, а то вдруг придумает что-то другое, а не то, что ему сказали сделать. Слесарь не инженер, он гордится только тем, что умеет пользоваться инструментом.

А теперь посмотрите на толпу хаскелистов и любого энтерпрайзного инженера. Инженер проектирует! У него для этого есть методологии проектирования, парадигмы проектирования, OOD, DDD, даже паттерны у него не чего-попало, а паттерны проектирования, блд! А что хаскелиисты? Зайдите в любой чат и сразу увидите. Хаскель для них все лишь интрумент, они обсуждают сам этот инструмент, никакого проектирования, и им нечем гордиться, кроме своего умения в этот инструмент. Потому что слесари, сласари!
Аноним 01/02/21 Пнд 11:46:42 1927677518
реально ли найти работу?
Аноним 02/02/21 Втр 02:28:22 1928531519
Аноним 17/02/21 Срд 13:34:08 1944115520
Посоветуйте библиотеку для работы с изображениями, что то вроде Pillow на Python.
Аноним 20/02/21 Суб 14:13:02 1947325521
Аноним 25/02/21 Чтв 17:09:59 1951479522
Добрый день, камрады. Может кто-нибудь из присутствующих подготовить меня к зачету по этому языку? С околонуля, потому что кода я уже почти пол года никакого не писала.
Аноним 03/03/21 Срд 16:20:50 1956449523
>>1947325
спасибо
а не можешь начинающему пояснить за вот такую проблему?

type Point = (Int,Int)
line_0 :: Point -> Point -> [Point]
line_0 (xa,ya) (xb,yb) = map (\p -> (round (fst p), round (snd p))) [((xa(1-t)+xbt), (ya(1-t)+ybt))|t <- [0, 0.01 .. 1]]

дает ошибку No instance for (RealFrac Int) arising from a use of ‘round’ и прочая и прочая. Я как бы и понимаю, что беда в типах, но как это исправить? То есть как реализовать преобразование типов так, чтобы это дело не ругалось?
Аноним 05/03/21 Птн 02:24:31 1957849524
>>1956449
Скорее всего есть более правильный способ, но код ниже хотя бы компилируется.
Нашёл такое пояснение: https://stackoverflow.com/a/19019707/8569383

type Point = (Int,Int)

line_0 :: Point -> Point -> [Point]
line_0 (xa,ya) (xb,yb) = map (\p -> (round (fst p), round (snd p))) lst
where
ts :: [Double]
ts = [0, 0.01 .. 1]
lst :: [(Double, Double)]
lst = [(( (fromIntegral xa)(1.0-t)+xbt), ( (fromIntegral ya)(1.0-t)+ybt))|t <- ts]
xbt = 1
ybt = 1


мимопроходил
Аноним 05/03/21 Птн 13:30:38 1958064525
>>1951479
Бамп. Не за спасибо, конечно.
Аноним 05/03/21 Птн 15:19:01 1958200526
>>1957849
Спасибо, вроде понял что к чему.
Аноним 05/03/21 Птн 20:52:17 1958601527
>>1956449
```
import Control.Arrow (())

type Point = (Int,Int)
line_0 :: Point -> Point -> [Point]
line_0 (xa,ya) (xb,yb) =
map (round
round) [(f xa xb t,f ya yb t) | t <- [0, 0.01 .. 1]] --
where
f :: Int -> Int -> Double -> Double
f a b t = fromIntegral a (1 - t) + fromIntegral b t
```
Во-первых знак умножения писать надо. Т.е. вместо ybt надо писать yb * t.

Во-вторых, нельзя умножить Double или Float на Int, или сложить, например.
Большинство операций работают только с аргументами одного типа.
Т.к. ты использовал [0,0.01..1], то благодаря литералу 0.01 тип этого выражения уже не [Int], а [Double] (или [Float], или еще какая вещественная дребедень).
Есть операции приведения к нужному числовому типу. Из целого в вещественное можно переводить функцией fromIntegral.

В третьих используй `where` или другие штуки, чтобы не превращать код в нечитаемое месиво.
Например, как я вынес тяжелое мозолящее глаза выражение из list comprehension прямиком в where блок, обозвав это функцией f.
Аноним 05/03/21 Птн 20:54:29 1958604528
>>1958601
```
import Data.Bifunctor (bimap)

type Point = (Int,Int)
line_0 :: Point -> Point -> [Point]
line_0 (xa,ya) (xb,yb) =
map (bimap round round) [(f xa xb t,f ya yb t) | t <- [0, 0.01 .. 1]] --
where
f :: Int -> Int -> Double -> Double
f a b t = fromIntegral a (1 - t) + fromIntegral b t
```
пофиксил, т.к. импортнутый из Arrow оператор не отображался
Аноним 18/03/21 Чтв 00:27:23 1970233529
>>1667200
Ебать ты специалист по О-нотации. Сам то понял что высрал?
Аноним 26/03/21 Птн 00:35:15 1977678530
Народ, а для чего ваш язык вообще нужен собственно? Я слышал у вас там какие-то математические фокусы и все дела, но это нужно просто чтобы приколы прикалывать или как? Типо хороший язык для спортивного программирования или для чего? Сори если немного шизоидная манера письма. Темпа под 39
Аноним 05/04/21 Пнд 21:10:09 1987172531
>>1977678
Хачкель - язык общего назначения.
Имеет больше смысла спрашивать для чего он не нужен.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов