
Denis
21.02.2018
09:38:59
я помню был пост га гисте на эту тему, но я целиком не прочитал - там такие варианты рассматривались?

A64m
21.02.2018
09:39:17
понятно, что на практике в строгих языках что-то делают не строго, а в ленивых что-то нелениво, но общая проблема ФП остается:
ФП практичен только при неполной материализации промежуточных структур, но как не хитри, опасность влететь на полную материализацию всегда реально существует

Alister
21.02.2018
09:39:25

Александр
21.02.2018
09:39:39

Google

A64m
21.02.2018
09:41:39

Denis
21.02.2018
09:42:29
я давненько пролистывал, уже не помню

Андрей
21.02.2018
09:42:54
не зря я вчера сюда восстановился )
как раз запросил сабж

A64m
21.02.2018
09:43:26
т.е. там у всех мапов списки материализуются, борются там с тем, чтоб материализация происходила однократно и без вышибания стека

Андрей
21.02.2018
09:45:42
материализация списков вообще чревата сама по себе, даже в отрыве от неоптимальности ее реализации. поэтому фьюзинг и трансдьюсеры всякие придумывают.

Aleksey
21.02.2018
09:45:49

A64m
21.02.2018
09:46:57

Александр
21.02.2018
09:47:22

Aleksey
21.02.2018
09:48:01

A64m
21.02.2018
09:50:35
короче говоря, когда люди находят ФП и думают, о, буду собирать конвейеры из мапов и фильтров теперь даже не догадываются, какое адище за всем этим скрывается.

Андрей
21.02.2018
09:53:40
я как раз про это хотел говорить на несостоявшемся докладе ) абстракция настолько высока, что детали реализации не рассматриваются, а в них всем известно кто )

Denis
21.02.2018
09:55:08
при этом со всякими псевдофункциональными реализациями все ок

Google

Denis
21.02.2018
09:55:17
в мейнстримных языках

A64m
21.02.2018
09:55:33

Denis
21.02.2018
09:56:09
если не на персистентную структуру данных натягивают map

Андрей
21.02.2018
09:56:11
про линк и джавастримы полагаю

Denis
21.02.2018
09:56:15
rust например
думаю что и скала наверняка
и фиг знает сколько языков еще

Андрей
21.02.2018
09:56:44
там совсем не ок

Denis
21.02.2018
09:57:12
почему кстати не ок, если там массив/вектор под капотом?

A64m
21.02.2018
09:57:16
rust например
ну вот линк ту обджектс в сишарпе считается за мейнстримную функциональщину на неперсистентной структуре (энумераторе, который мутабельный)?

Denis
21.02.2018
09:57:32

Андрей
21.02.2018
09:57:54
поэтому и не ок, что трансдьюсров нет и все материализуется на каждом шаге

Denis
21.02.2018
09:58:25
то что не фьюзится в цепочке комбинаторов это другой вопрос

A64m
21.02.2018
09:58:31
там хорошая галерея адища, и тормоза и плохая асимптотика и текучесть из-за негранулярности материализации и просто тормоза на константах, и адовые хаки на велью-типах из-за которых в фориче один и тот же элемент повторяется и т.д.

Denis
21.02.2018
09:58:33

Андрей
21.02.2018
09:59:19
ну как другой вопрос - это причина неокея

A64m
21.02.2018
10:00:08
так что в целом в мейнстриме с этим еще хуже чем даже в наивных ФЯ-имплементациях, в основном от дремучести и нечитательства
про фьюжен вообще речи нет, этого почти нигде нет и там где есть работает только когда повезет

Denis
21.02.2018
10:01:37
в идеальном мире структуры данных должны бы были выбираться статически оптимайзером исходя из кода, прогнозов по фьюжену и хинтов о размере структур программистом

Google

A64m
21.02.2018
10:04:08
ну и в результате разница по производительности всех этих костылей для объединения функций в конвейер в разных языках отличается на несколько десятичных порядков

Denis
21.02.2018
10:04:10
но это пока только для sci-fi фантастов

A64m
21.02.2018
10:07:54
да нет, лично меня шокировала 1) адовость хаков которые приходится для всего этого применять 2) размеры разницы, понятно, что какая-то разница должна была быть. 3) вообще сам дизайн спейс где столько всего и одно хуже другого (эта проблема вроде той что с рекордами)

Alister
21.02.2018
10:25:25
только в последнем "instead of solving the problem"

kana
21.02.2018
10:26:33
Раст и элм в одном ряду

A64m
21.02.2018
10:28:02
инженер-восемнадцатого-века вместо инженер, таких среди программистов пока нету.

Alexander
21.02.2018
10:37:02

Андрей
21.02.2018
10:38:04
значит ситуация лучше чем я пессимистично полагал. но все равно не уверен в окее

Kirill
21.02.2018
10:44:34
а есть какие-то чёткие критерии для окея?

Андрей
21.02.2018
10:47:46
четких нет - только степень окейности. играться то и на неокейных реализациях можно

Alexander
21.02.2018
10:49:04
если скала -то окей

Denis
21.02.2018
10:57:06
Какой сейчас бинарный сериализатор побыстрее? У меня тут binary и он какой-то тормозной.

Leonid
21.02.2018
10:59:31
если именно сериализатор то cbor/serialise или store наверно

Misha
21.02.2018
10:59:50
https://hackage.haskell.org/package/serialise ?
по случайности смотрел talk Дункана про это дело
говорил, что упор был на скорость

Artyom
21.02.2018
11:05:24
store или flat
но если хочется стандартизированный формат, то serialise тоже ок

Denis
21.02.2018
11:13:33
мне хочется 1) быстро 2) дженерики 3) компактно

Google

A64m
21.02.2018
11:14:46
а flat быстрый что-ли?

Artyom
21.02.2018
11:17:05
по бенчмаркам быстрый

A64m
21.02.2018
11:18:08
по каким бенчмаркам? Из серии репозиториев на гитхабе, где сравнения библиотек вроде все последовательности, все словари и т.д.?

Artyom
21.02.2018
11:18:14
да

Denis
21.02.2018
11:19:36
а покажите репу с бенчмарками?

A64m
21.02.2018
11:22:05
Я бы относился к результатам этих бенчмарков с осторожностью

Leonid
21.02.2018
11:22:30
В cbor были бенчи
Store там точно был. @qnikst пилил

Artyom
21.02.2018
11:23:12
https://github.com/haskell-perf/serialization

Alexander
21.02.2018
11:43:17
я адаптировал для сторе и сериалайз
они сравнимы были
на плоских сторе выигрывал
на деревьях цбор

Denis
21.02.2018
11:44:49
надо походу store брать
он в генерики умеет?
так, умеет

A64m
21.02.2018
11:56:03
store это когда 1) читать той же программой. 2) сериализуем в основном массивы стораблов но изредка что-то еще

Denis
21.02.2018
11:59:30
1 это ок, по 2 - есть куча своих нерекурсивных типов, вроде особых противопоказаний нет
как по человечески можно узнать какие зависимости из зависимостей приложения, зависят от определенной либы?

Kirill
21.02.2018
12:41:58
Stack dot?

Google

Denis
21.02.2018
12:59:25
подходит, спасибо
теперь осталось понять как в этой мешанине разобраться
ой да, я помню эту проблему
потом либо разрешения не хватает в png, либо софт не умеет зумить настолько сильно
надо прям дот-файл разбирать

Alexander
21.02.2018
13:05:51
а постресовый бинарный протокол для copy-to уже кто-нить зопилил?

Kirill
21.02.2018
13:08:17
@catamorphism там же просто перечисление связей

Denis
21.02.2018
13:08:38
я через dot сразу нарисовал
там безумная лапша такая, на волосы похоже

Alexander
21.02.2018
13:09:04
в .svg надеюсь?

Denis
21.02.2018
13:09:38
можно и в svg наверное, если dot умеет
впрочем, с svg у меня вчера фейл был
я так и не нашел чем можно огромный svg перекрутить
никакие тулзы не справляются

Leonid
21.02.2018
13:10:22

Alexander
21.02.2018
13:10:47
WT в соседнем проекте сами пилили
но тот код не открытый, а перепиливать лень

Leonid
21.02.2018
13:11:04
https://hackage.haskell.org/package/postgresql-copy-escape
Но вроде только csv
Бинарный можно из хаскл слепить

Denis
21.02.2018
13:12:12
мы так прочненько на postgresql-simple сидим, думаю в этих проектах никогда не слезем