
A64m
16.07.2018
12:28:21
ну кое-какие пересечение у них есть, но не надо его переоценивать
тайпклассы вместо модулей в хаскеле не особо используются. это всякие сомнительные пакеты вроде листлайк, единственная популярная библиотека которая что-то вроде такого делает это vector, и то там модули костылятся не только на тайпклассах, но и на сишном препроцессоре что уже совсем ужас

Timofey
16.07.2018
12:30:49

A64m
16.07.2018
12:30:59
короче говоря, там где должны бы быть модули в хаскеле обычно просто копипаст, сишный препроцессор или вообще ничего

Google

A64m
16.07.2018
12:31:31
так что и какой-то реальной проблемы выбора между модулями и тайпклассами просто не существует

Евгений
16.07.2018
12:32:54
А когда ты говоришь "вместо модулей" ты имеешь ввиду беззаконные тайпклассы или что? Я просто плохо одного от другого могу отделить

A64m
16.07.2018
12:34:01
да законность тут не при чем.

Евгений
16.07.2018
12:34:25
Тогда попробуй сформулировать критерии
Ну то есть я понимаю, что 45 вариантов строк и 14 мапов это юзкейс модулей
Но это интуитивно всё

A64m
16.07.2018
12:36:28
смысл модулей, грубо говоря, в том, что мы можем рассматривать импорт вроде
import Data.Text как некий параметр, а список импортированного - как тип этого параметра. т.е. мы ничего не меняя в коде можем подменить используемую библиотеку другой, которая подходит к интерфейсу который мы используем.
насколько это можно реализовать тайпклассами? да почти ни насколько.

Leonid
16.07.2018
12:37:56
Как там, кстати text-utf8 у hvr? Давно я не смотрел

A64m
16.07.2018
12:38:01
мы можем превратить Data.Text в один здоровенный тайпкласс с зиллионом методов, но эта деталь просочиться в использующий модуль, у нас в сигнатурах не будет конкретных типов, а будет класс и параметры
с другой стороны - тоже проблема. в случае модулей нам достаточно имплементировать в подставляемом в параметр модуле только то, что реально используется в параметризованном модуле.
но с случае мегатайпкласса надо всегда имплементировать все либо нарываться на рантайм ошибки
модули, на самом деле, как и тайпклассы не полностью соотвествуют такому идеалу, в случае эмельных функторов импорт все же отличается от параметра - параметр не воображаемый а реальный и надо вручную подставлять другие модули в функтор

Google

Vladimir
16.07.2018
12:41:56
Затея сделать параметризованные модули в кабале -- это не очевидно, но звучит офигенно. Притащить вывод типов модулей в систему сборки -- это что-то очень доброе.

A64m
16.07.2018
12:42:17
т.е. как и в случае тайпклассов надо сразу вкладываться в архитектурку, которая становится все навороченнее и дальше дела развиваются так: ехал функтор через функтор, видит функтор в функтор функтор сунул функтор функтор в функтор - функтор функтор функтор функтор

Евгений
16.07.2018
12:42:28

A64m
16.07.2018
12:43:25
в 2000-х поэтому дреер с россбергом придумали миксины, которые уменьшают такие вложения в архитектурку и пытаются сделать весь этот функтор-пламбинг автоматически

Евгений
16.07.2018
12:43:56
А в бекпаке миксины?

A64m
16.07.2018
12:45:12
не совсем
там есть разделение на сигнатуры и структуры - в мискинах нет
но автоматизация применения "функторов" и замаскированные под обычные импорты параметры есть
у этой автоматизации есть своя цена, очень тупая проверка соотвествия структуры и сигнатуры.
в макквиновских модулях она умная, с сабтайпингом, но миксины такое не осиливают
также янг не имплементировал рекурсию.
рекурсия это тоже улучшение миксинов по сравнению с макквиновскими функторами, которые с ней не дружат
впрочем, насчет придумали миксины - тут поправка нужна, миксины придумали в скриптах, дреер с россбергом придумали как их для нормальных языков сделать

Евгений
16.07.2018
12:56:41
Рекурсивные модули, которые ты скидывал недавно, мне очень dhall напомнили. Мне кажется, что у них и проблемы будут соответствующие с вербозностью

A64m
16.07.2018
12:58:14
так это "дхолл сделанный правильно". впрочем, дхолл вроде как отходит от модулей, там же в новых версиях вроде нельзя значения и типы в одном "рекорде" иметь
вообще не факт, что гонзалес в курсе, что он фактически переизобретает модули, так что шансы изобрести велосипед с квадратными колесами не прочитав ничего про модулестрадания за последние 35 лет у него высоченные
где-то чатик прорекламировали что-ли?

Bogdan
16.07.2018
14:14:03
Первый в поиске по запросу "Haskell"

Андрей
16.07.2018
14:15:30
?

A64m
16.07.2018
14:15:42
ну 5 джойнов пачкой это не объясняет

Google

Александр
16.07.2018
14:15:57
Это просто случайность.

Leonid
16.07.2018
14:16:21
сейчас будут гербалайф или биткоины толкать

A64m
16.07.2018
14:17:10
один (как минимум) из пяти окамлист

Dmitry
16.07.2018
14:18:03
Да ладно, что вы так. Просто заготовьте ответы на три вопроса: 1) какие книги читать, 2) какую IDE использовать, 3) применяется ли Haskell в продакшене.

A64m
16.07.2018
14:19:46
1) никакие 2) никакую 3) нет

Ilya
16.07.2018
14:20:25
Ubuntu 18.04, стоит GHC 8.0.2, в попытках что-то сомпилить с -fllvm говорит, что Warning: Couldn't figure out LLVM version! Make sure you have installed LLVM 3.7
При этом по sudo apt install llvm ставится llvm-6.0
Что делать

A64m
16.07.2018
14:21:35
поставить 8.2 или 8.4 для начала, они вроде работают с llvm 6 (но оба будут жаловаться, правда)

Dmitry
16.07.2018
14:21:35
Ну оно ж собирается и работает?

Ilya
16.07.2018
14:22:05

A64m
16.07.2018
14:22:23
можно поставить другую версию llvm и указывать в параметрах ghc какие opt и llc использовать

Ilya
16.07.2018
14:22:48
или можно как-то ещё поставить, я просто стэком так и не научился пользоваться

Ilya
16.07.2018
14:23:17

A64m
16.07.2018
14:23:35
стэк то есть?
не обязательно https://www.haskell.org/downloads/linux

Yuriy
16.07.2018
14:39:22
ppa:hvr, возможно, ещё живой
если HVR ещё не ушёл на стэк

A64m
16.07.2018
14:41:35
а я на что ссылку дал по вашему?

Yuriy
16.07.2018
14:43:55
действительно, там ppa:hvr упоминается

Ilya
16.07.2018
14:45:30

Google

Denis
16.07.2018
15:01:03
интересно, есть линзы из тип суммы и можно ли как-то сделать
view (l1 or l2 or l3)?
чтобы выбирать линзу как-то автоматически

kana
16.07.2018
15:13:40
линзы из суммы называются призмы
и можно вроде (чтобы получить в сумме тоже призму, то есть не view будет)
но если немного поиграться с тайплевелом, то наверное можно будет и из призм собраться линзу

Admin
ERROR: S client not available

A64m
16.07.2018
15:50:42
есть разве что такая штука http://hackage.haskell.org/package/lens-4.17/docs/Control-Lens-Traversal.html#v:failing
> Left 1 ^? failing _Left _Right
Just 1
> Right 1 ^? failing _Left _Right
Just 1

Denis
16.07.2018
15:56:06

A64m
16.07.2018
15:56:48
p1 `failing` p2 `failing` p3

kana
16.07.2018
17:07:36
ну линзу это не даст, только призму
для генерации линзы нужно по типу генерить список конструкторов, както-то вычитать из списка конструкторов конструкторы для призмы, и делать линзу когда список пустой

Index
17.07.2018
05:20:49
5-й или 17-й

Yuriy
17.07.2018
07:59:29
несколько уровней, объединённых в стэк

Alister
17.07.2018
09:25:05
https://twitter.com/Hillelogram/status/1019051564776878080

A64m
17.07.2018
09:29:31
https://twitter.com/d6/status/1009305263235616769

Ilya
17.07.2018
09:32:13

Alister
17.07.2018
09:34:21
нужно создать CV-нейросеть которая будет по оптическим образцам и с учителем-программистом который будеть ревювать и задавать коффы определять есть ли баги в коде или нет методом анализа форм и кластеров изображения

Ilya
17.07.2018
09:35:58
а потом натравить её на собственный код
и через несколько дней наблюдать закат человеческой цивилизации

Google

Pineapple
17.07.2018
09:37:35
Та третьей итерации она перестанет компилиться

kana
17.07.2018
09:39:47
достаточно ей поправить код компилятора, чтобы продолжить компилиться

Aleksey
17.07.2018
09:40:13

Anatolii
17.07.2018
09:47:34
когда-то закончится война "типистов" и "не тепистов"?:)

Ilya
17.07.2018
09:51:44
Сегодня в маршрутке хаскеллист лет 34х спросил чат: "А если всем попросить бога, он выключит войну типистов и не тепистов?"
С клапауцием плакала половина чата... Боже, выключи войну!!!

Yuriy
17.07.2018
09:54:43

Alister
17.07.2018
09:56:40
типические чистки и статические лагеря

Dmitry
17.07.2018
10:00:28
какой тайпкласс лучше использовать, когда есть что-то с нулевым (умолчательным?) элементом, но при этом не моноид?

Pineapple
17.07.2018
10:00:54
Default из Data.Default.Class ?

Dmitry
17.07.2018
10:01:23

Aleksey
17.07.2018
10:02:51

Ilya
17.07.2018
10:03:05

Leonid
17.07.2018
10:03:07

shadowjack
17.07.2018
10:03:13

Ilya
17.07.2018
10:03:23
кроме нулевого элемента что есть?