
Alexander
28.06.2017
20:11:51
т.к. пишут только факториалы
а факториал это максимум строчек 200 и то если упороться

Kit
28.06.2017
20:14:17
10k loc это типа 10 000 строчек кода?

Alexander
28.06.2017
20:14:46
да

Google

Dmitry
28.06.2017
20:15:38
нету конечно, таких вообще не существует
Почему не существует? В коде ghc очень много строк ;) не уверен, что существовал хотя бы один момент времени, в котором от одного человека было бы 10К строк кода, но думаю, что несколько точно успело написать.
Сдам @lightgreen. У него есть ;) У меня, к сожалению, поменьше...

Alexander
28.06.2017
20:16:32
@chshersh потому, что вопрос маловероятно что подразумевает нормальный ответ
может с какой-то вероятностью это пришли попытаться захайрить людей, но скорее всего начнется обычная история

Dmitry
28.06.2017
20:18:12

Alexander
28.06.2017
20:18:17
вон в большом проекте (который один из тех что пишем), не считая того, что в связанных живущих в других репозиториях у меня 43,278 ++ / 28,624 -- по статам гитхаба
но будто это о чем говорит
все равно показать не смогу и всем придётся поверить

Kit
28.06.2017
20:19:54

Alexander
28.06.2017
20:19:54
поэтому я дал абсурдный ответ, если человек пришёл потроллить, будет не интересно, если серьёзно, то сформулирует вопрос и тему получше
ну это за год примерно, может полтора
@ilyaraz так в чем именно вопрос?

Ilya
28.06.2017
20:23:09
ну вопроса конкретного у меня нет: но интересно by and large, насколько легко вносить локальные изменения в большой проект

Alexander
28.06.2017
20:23:42
от проекта сильно зависит, во всяком случае приятнее, чем во многих языках

Google

Ilya
28.06.2017
20:23:57
я ничего серьезного на Хаскелле не писал, но а приори кажется, что любое нетривиальное изменение влечет цепочку изменений

Alexander
28.06.2017
20:24:11
есть некоторые нехорошие моменты в дизайне, которые могут привести к тому, что придётся какое-то изменение много где протащить
если накосячить при проектировании
но такие изменения обычно механические

Ilya
28.06.2017
20:24:52
ну да, вроде монаду навесить?

Anatolii
28.06.2017
20:25:06
в других языках ты узнаешь о том что эти изменения надо сделать сильно позже
возможно уже на проде

Alexander
28.06.2017
20:25:22
например, если чистый код был, который оказывается не чистым, но это обычно локализовано
или если лишние параметры/state явно таскались и хочется продолжать
впрочем все равно приятнее, чем во многих языках, где боишься что-то тронуть, чтобы все не развалилось
тут можно и достаточно большой рефакторинг делать
может у кого другой опыт
а, товарищи их serakel и hexresearch?
sorry "serokel"
минус фирмы названной от фамилии, очепятаешься и стыдно становится

Artyom
28.06.2017
20:30:30
serokell actually

Alexander
28.06.2017
20:31:28
!!
от блин
совсем стыдно

Ilya
28.06.2017
20:34:11
единственный раз, когда я пытался написать что-то не совсем крошечное, в какой-то момент оказалось, что в самой внутренней функции нужны случайные числа, и было все очень tedious исправлять

Google

Ilya
28.06.2017
20:34:32
то есть это была не катастрофа отнюдь, но кажется, что в больших проектах это все должно умножаться на 10

Alexander
28.06.2017
20:34:43
скорее наоборот

Ilya
28.06.2017
20:34:55
сорри, я не имел ввиду троллить совершенно, но наверняка это стандартная проблема

Alexander
28.06.2017
20:35:09
в больших проектах больше взаимодействий и эффектов видно сразу
в итоге все достаточно модульно получается, и не разбегается по проекту

Ilya
28.06.2017
20:38:45
ок, понял
для меня такое утверждение выглядит удивительным, но остаётся только поверить :)

? animufag ?
28.06.2017
20:40:25

Alexander
28.06.2017
20:41:08
это те где для остальных нужно написать 16 строк чтобы скомбинировать готовые либы?
(сорри я немного не серьёзен, устал, а завтра опять вставать рано и на капельницы ехать)
но вообще пример выше валидный
ещё валидный - embedded / или какой realtime

Ilya
28.06.2017
20:42:24
ну большинство research кода как раз таково, да (я не промышленный программист, подвизаюсь в "академии")
надо написать high-performance лапши
поэкспериментировать и выкинуть
для такого — haskell, видимо, действительно не хорош, но мой пример со случайными с числами — не из этой области

Alexander
28.06.2017
20:43:17
если сильно high-performance, ещё нужно кучу SIMD и прочей веселухи, не факт, что haskell - best fit
(кодогенерация не в счет)

? animufag ?
28.06.2017
20:43:50

Alexander
28.06.2017
20:44:22
и?

Google

Alexander
28.06.2017
20:44:56
кстати, а вы знали что Tsuru Capitals оказывается живы и здоровы?
извините за offtop, просто вспомнилось и темы близкие

Vladislav
28.06.2017
20:45:17

Alexander
28.06.2017
20:45:39
hmatrix, всякие байндинги к лапакам есть

Admin
ERROR: S client not available

Alexander
28.06.2017
20:45:45
но их качество странное
когда на haskell пишешь хочется высокоуровневости при этом, а хорошее решение вроде не нашли

? animufag ?
28.06.2017
20:46:29
Ну ссылки во все стороны

Alexander
28.06.2017
20:47:18
https://github.com/fpco/inline-c-nag вот типа такого, например
(тут я не эксперт) но _простой_ data analysis, на питонах с пандасами или R plyr и т.п. писать кажется проще
простой в смысле прошёлся и выкинул

Ilya
28.06.2017
20:48:47

Alexander
28.06.2017
20:48:48
в интерактивном режиме
а чем многомерный массив отличается от одномерного, кроме наличия функции индексации?

Ilya
28.06.2017
20:49:33
я как-то смотрел, как high-performance hash tables реализованы (https://hackage.haskell.org/package/hashtables) — и там все было очень низкоуровнево и неприятно

? animufag ?
28.06.2017
20:49:47
и?
Ну двусвязные списки неприятно делать. Ещё неприятнее когда структура 2мерная

Misha
28.06.2017
21:03:41
господа, такой вопрос: я хочу в некотором кэше держать exception в течении какого-то короткого времени, чтобы не бомбить IO, если там ошибка какая-то временная. не будет ли у меня каких-то проблем связанных с хранением именно exception? Типа там какой-нибудь большой и толстый stack trace, загадочные утечки памяти и т.п.

Alexander
28.06.2017
22:19:20
нет обычный тип
в общем что обычно случается, то и тут

Misha
28.06.2017
23:26:31
круто

Google

Konstantin
29.06.2017
16:52:40
@qnikst

Alexander
29.06.2017
16:53:28
правильно?

Anatolii
29.06.2017
16:53:37
?
Как наш уютный хаскеля чатик наполонили he?
*hr

Vadim
29.06.2017
17:34:38
Да тут и помимо hr, много разных людей. Я вот с чатика clojure сюда перекочевал

Ilya
29.06.2017
19:12:46
а можно ссылку на чатик про clojure,
?

Vadim
29.06.2017
19:36:44
https://t.me/clojure_ru

Vasiliy
29.06.2017
20:25:50
подскажите, есть какой-то более-менее формальный метод отображения типов-сумм в реляционные таблицы?
гуглится с трудом, всякие sum и union выдают маны по соответствующим функциям из sql
нашёл пару рецептов с использованием триггеров, но это выглядит как костыли
вот в project-m36, который, вроде как, представляет из себя настоящую реализацию реляционной модели, есть поддержка ADT https://github.com/agentm/project-m36/blob/master/docs/new_datatypes.markdown#implementation-for-haskell-types
но тут вопрос - они это через внутренние костыли делают или используют какие-то реляционные фокусы?


Dmitry
29.06.2017
20:57:35
Не знаю насчёт формального метода, но в project-m36 используют не особо что-то умное на первый взгляд. В ячейках хранятся объекты типа Atom. Поиск по сорцам показывает, что произвольные ADT хранятся этим конструктором типа Atom:
data Atom = ... | ConstructedAtom DataConstructorName AtomType [Atom]
То есть по сути просто название конструктора и список полей. Как видно, не очень типобезопасно, ибо без зависимых типов грустно в этом случае (они могли бы помочь). Но у них есть инстансы для Generic, они используют женериковое представление структуры ADT, чтобы конвертировать в такой тип. Если их реализация протестирована норм, то проблем не должно быть.