@haskellru

Страница 429 из 1551
Ilya
21.09.2017
13:18:03
gnuplot

Alexander
21.09.2017
13:21:27
не знаю matplotlib, но если взять R и делать графики с ним, но можно много больше, чем с gnuplot

впрочем для моих задач мне хватало gnuplot

? animufag ?
21.09.2017
13:24:31
В общем то мне нужно было вертикальные/горизонтальные бары рисовать. Сгруппированные, у групп должны быть заголовки

Google
? animufag ?
21.09.2017
13:24:32
Я это в итоге делал через генерацию свг

Довольно гибкий инструмент

Aleksey
21.09.2017
13:26:44
mpl это далеко не только бары





Рисовать такое руками в SVG - не хотеть

Aleksey
21.09.2017
13:29:17
"Julia - течёт" (это практически всё, что я про неё знаю)

Alexander
21.09.2017
13:29:22
не вижу вот вообще причин предпочитать julia

в R толпа туториалов и библиотек

а если мне они не нужны, то я возьму haskell

Рисовать такое руками в SVG - не хотеть
особенно если это 3д и крутить можно и приближать

Ilya
21.09.2017
13:30:26


Google
Aleksey
21.09.2017
13:30:58
Alexander
21.09.2017
13:31:17
landscape кстати у gnuplot есть, там убиться можно все делать

Ilya
21.09.2017
13:32:11
но в последнее время я сам пересел на mpl с gnuplot... удобно обрабатывать данные и тут же их отображать, и всё это в одном скрипте

Alexander
21.09.2017
13:33:45
я с гнуплотом страдал когда хотел 3д и что-то сложное

пока переупакуешь данные как ему надо

плюс там нету всякой доброты типа гистограммок и т.п. быстро сделать (или я не нашёл)

Denis
21.09.2017
13:56:01
https://github.com/wireapp/wire-server

Vasiliy
21.09.2017
14:32:06
кароче, я ничего не понимаю https://pastebin.com/AnKzEqfq

есть у vinyl у Rec инстанс моноида https://hackage.haskell.org/package/vinyl-0.6.0/docs/Data-Vinyl-Core.html#t:Rec

там сказано, что если f a - моноид, то и Rec f '[a] моноид

Denis
21.09.2017
14:34:46
там сказано, что если f a - моноид, то и Rec f '[a] моноид
а может вместо Int какой-нибудь Sum Int ведь надо уточнить какой именно моноид

Vasiliy
21.09.2017
14:35:00
я в качестве функтора подсовываю [], который делает моноидом всё, что видит вокруг, но компилятор согласен с тем, что Rec [] '[Int, String] - моноид, а для любого Rec [] m он отказывается в это верить

Denis
21.09.2017
14:36:46
а что если plusa :: Monoid m => Rec [] m -> Rec [] m -> Rec [] m?

Vasiliy
21.09.2017
14:36:47
там в документации есть какие-то функции для констрейнтов, может, их надо применить...

нэ, у m кайнд [*]

блин, а решение, оказывается, самое наитупейшее - просто прописать в констрейнт plusa то, что ему нужно - Monoid (Rec [] m)

я с двух часов долбался...

Google
Denis
21.09.2017
14:48:47
я с двух часов долбался...
а зачем тебе такой моноид?

Vasiliy
21.09.2017
14:49:42
у меня есть список рекордов, а мне нужен рекорд списков

эдакий sequenceA

Denis
21.09.2017
14:50:18
Vasiliy
21.09.2017
14:51:15
ну да, но в данном случае решение получилось другое - foldMap (rmap (Compose.(:[])))

жуть какая :D

kana
21.09.2017
15:22:55
Как часто и с какой охотой кто использует линзы? Мне по некоторым причинам не хочется их использовать, и тащить TH тоже

Vasiliy
21.09.2017
15:24:28
можно взять microlens, например, оно гораздо легче

я стараюсь использовать, где получается

Hot
21.09.2017
15:27:37
Ребят, объясните плз, что ещё за линзы? Или ссылкой в меня киньте.

Vasiliy
21.09.2017
15:28:17
https://hackage.haskell.org/package/lens

Aleksey
21.09.2017
15:29:04
Широко используем. И не только простые линзы - траверсалы, призмы, вот это всё

Бояться линз - жить грустно

Микролинзы, увы, только простую оптику умеют, а самый смак в непростой

Да и писать линзы руками лениво, так что и с микролинзами будет TH

Alexander
21.09.2017
15:53:21
в микролинзах нету травераблов же?

он вообще бесполезен

Aleksey
21.09.2017
16:09:43
Зато можно притащить в либу, где нужны только сеттеры/геттеры и не хочется нагружать толстыми lens пользователей. Впрочем, траверсаблы часто нужны, если уж линзы пользуешь

Aleksey
21.09.2017
16:10:59
Пример чего?

Google
Denis
21.09.2017
16:11:30
Пример чего?
зачем траверсинг для линз

Aleksey
21.09.2017
16:12:34
Э... да хоть в подрекорды сходить, если подрекордов - список.

Aleksey
21.09.2017
16:15:19
User ^.. uFriends . traversed . uPets . _Cat . name

Vasiliy
21.09.2017
16:16:08
λ> [(1, 2), (3, 4)] & each._1 %~ show [("1",2),("3",4)]

Aleksey
21.09.2017
16:16:49
User ^.. uFriends . traversed . uPets . _Cat . name
"Клички всех кошек друзей юзера"

Vasiliy
21.09.2017
16:19:20
вот ещё в коде нашёл findIndexOf (clients.itraversed) (elemOf _3 regCode) db

находит в базе id клиента, у которого в третьем поле такой-то regCode

вот ещё побольше пример https://www.schoolofhaskell.com/user/tel/lens-aeson-traversals-prisms

Aleksey
21.09.2017
16:36:05
Вот да, обработка XML/JSON с траверсалами без полной распаковки в типы - и даже без описания полной схемы!

Вот это отличный пример полезности оптики

kana
21.09.2017
16:51:38
Как map f . map g == map (f . g) Так и p &&. q = \x -> p x && q x filter p . filter q == filter (p &&. q) Этот шаблон можно как-то обобщить. Эндоморфизмы - моноид по композиции, предикаты - по энду

Yuriy
21.09.2017
16:54:09
Aleksey
21.09.2017
16:55:39
а зачем тут traversed?
из головы написал с телефончика, но да, в данном случае ^.. хватит

Leonid
21.09.2017
19:48:47
А чего сегодня ничего не пишите?

Anatolii
21.09.2017
19:49:52
Надо придумать наброс

Vasiliy
21.09.2017
20:07:19
у меня есть вопросик тогда

в чём разница между (C1 a, C2 b) => a -> b -> c и C1 a => C2 b => a -> b -> c?

kana
21.09.2017
20:12:02
Даже не знал про то, что можно писать как во втором кейсе)

Google
Alexander
21.09.2017
20:13:16
нету разницы

Vasiliy
21.09.2017
20:14:18
> data F where F :: Show a => Show b => a -> b -> F <interactive>:26:14: error: • Data constructor ‘F’ returns type ‘Show b => a -> b -> F’ instead of an instance of its parent type ‘F’ • In the definition of data constructor ‘F’ In the data type declaration for ‘F’

Alexander
21.09.2017
20:24:13
ну это одно и тоже значит, а то что в GADT синтаксисе парсер другой это другое дело

Vasiliy
21.09.2017
20:26:35
ага, я понял, спасибо

я думал, может, какие-то глубинные особенности GADTs, а это парсер...

Index
21.09.2017
21:57:35
я бы это как feature request зарепортил

хотя и граничит с багом, но все-таки a => b => ... это не Haskell98, и в мануале не упоминается (вроде). Хотя очень логичная и правильная конструкция.

Багом кажется хотя б асимметрия — если уж отвергать, то и в функциях, и в GADT-ах, а иначе принимать и не жаловаться в обоих местах.

Alexander
21.09.2017
22:19:59
мне кажется это какой-то побочный эффект что в функциях работает

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

Index
21.09.2017
23:52:31
Ну да.

Хотя это ж каррирование в чистом виде.

Pig
22.09.2017
05:21:31
Очень приятная нотация, жаль в Idris не поддерживается

Дмитрий
22.09.2017
06:33:05
Да, то что в функциях работает, а в GDTs нет, однозначно выглядит как баг, мне аж самому понравилось как выглядит такая нотация. Не удержался и попробовал. Действительно жаль, что GDTs такую конструкцию не признают :(

adam
22.09.2017
06:46:29
в чём разница между (C1 a, C2 b) => a -> b -> c и C1 a => C2 b => a -> b -> c?
В том, что в первом варианте это коньюкция классов, а во втором -- импликация этих же классов.

Евгений
22.09.2017
07:01:40
хотя и граничит с багом, но все-таки a => b => ... это не Haskell98, и в мануале не упоминается (вроде). Хотя очень логичная и правильная конструкция.
Почему это логичная? Знак '=>' это логический вывод, где список классов играет роль контекста, а тип -- вывода. Конструкция Г_1 |- Г_2 |- A бессмысленна

Reworr
22.09.2017
07:56:08
https://vk.com/cat_programming?w=wall-63708206_248309

Dmitry
22.09.2017
08:03:54
всем привет!

Андрей Мельников подал нам хорошую идею, и я решил вынести в массы

мы сделаем на fby(by) секцию lightning-докладов, где-то по 10 минут на доклад

скорее всего таким докладчикам дадим бесплатный билет на конфу, но это пока еще не точно

Dmitry
22.09.2017
08:05:10
@Reworr можно пояснить про аддитивные технологии в течение двух минут?

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