ndtimofeev
Haskell специальная_олимпиада Есть у нас строка. Приблизительно такая STIEEQAKTFLDKFNHEAEDLFYQSSLASWNYNTNITEENVQNMNNAGDKWSAFLKEQSTLAQMYPLQEI. Нам нужно сформировать список всех уникальных подстрок этой строки. Ну то есть nub . subsequences, но так чтобы на ноутбуке с 16 гигабайтами памяти завершалось хотя бы за минуту. Считать строку массивом байтов — нельзя.
agr
дыбр Haskell проектное Не прошло и года. В #2980231 я рассказывал об утекающих сокетах и грешил на сервер warp. Сегодня до меня, наконец, дошло, что это мой говнокод приводил к проблемам. Забивались очереди, по которым выстраивались коммуникации между серверными обработчиками запросов и фоновыми процессами.. Стоило затюнить скорость чтения из очередей и поставить метрики размера очередей на мониторинг — и, кажется, проблема ушла, warp ни при чём. А время покажет.
ndtimofeev
Haskell Есть у меня два гетеросписка: один мужественный на GADT'ах с Nil'ом и вот этим вот всем, а второй гейский вида data Cons a b = Cons a b. Как бы мне их терминалогически различать?
ndtimofeev
Haskell Допустим у нас есть библиотека реализующая некоторые статистические инварианты (например библиотека регионов). Допустим я хочу написать тест, который покажет мне что они всё ещё выполняются в соответствии с исходной идеей. Проблема в том, что результатом тестирования должна быть ошибка компиляции. Есть какие-то хорошие решения для прокручивания этого к cabal'у?
agr
дыбр Haskell СЯУ, что при определенных пока не поддающихся упрощению обстоятельствах warp перестаёт закрывать сокеты, оставляя их в close-wait до полного исчерпания. пока не понятно, как нужно составить, отправить и рубануть запрос, чтобы сервер вёл себя так.
ndtimofeev
Haskell ghc У меня такое ощущение что в ubuntu проект собранный при помощи cabal new-install собрался без поддержки -threaded. Что нажать чтобы исправить? А то у меня сервант ставит опердень раком.
L29Ah
? Haskell говно В программе space leak, но как искать его непонятно: ghc'шный профайлинг говорит, что всё занимается PINNED-памятью (поскольку я оперирую в основном ByteString'ами), и никаких подробностей о том, где она выделена, и что её держит, не говорит — gitlab.haskell.org
Как обычно в таких случаях, алгоритм по-хорошему должен в константной памяти работать, но вместо этого память жрётся и жрётся в ходе работы программы, освобождаясь только в конце.
github.com
Есть ли варианты лучше, чем бинарный поиск по коду методом комментирования? Кажется, в случае хаскеля это вообще так себе метод поиска утечек, поскольку в случае когда мы комментируем какого-нибудь потребителя данных, мы можем ненароком внести ещё один space leak, например когда большой thunk вычисляется по ходу итеративного алгоритма в компактный результат, либо это вычисление откладывается до самого конца, накапливая большие thunk'и в памяти.
agr
code Haskell
type family FragmentUnique api :: Constraint where
  FragmentUnique (sa :<|> sb)       = Or (FragmentUnique sa) (FragmentUnique sb)
  FragmentUnique (Fragment a :> sa) = FragmentNotIn sa (Fragment a :> sa)
  FragmentUnique (x :> sa)          = FragmentUnique sa
  FragmentUnique (Fragment a)       = ()
  FragmentUnique x                  = ()

type family FragmentNotIn api orig :: Constraint where
  FragmentNotIn (sa :<|> sb)       orig =
    And (FragmentNotIn sa orig) (FragmentNotIn sb orig)
  FragmentNotIn (Fragment c :> sa) orig = TypeError (NotUniqueFragmentInApi orig)
  FragmentNotIn (x :> sa)          orig = FragmentNotIn sa orig
  FragmentNotIn (Fragment c)       orig = TypeError (NotUniqueFragmentInApi orig)
  FragmentNotIn x                  orig = ()

type NotUniqueFragmentInApi api =
    'Text "Only one Fragment allowed per api ‘"
    ':<>: 'ShowType api
    ':<>: 'Text "’."
L29Ah
log быдлокодинг Haskell nopython Обнаружил что заебался с однопоточностью тормозной питонопараши и начал переписывать borgbackup на хаскеле. Уже научился пиздеть с удалённым сервером борга и читать метаданные репозитория и архивов, надеюсь на следующей неделе забекаплю уже чонить.
github.com
qnikst
Haskell гинь-гинь прикольно.. во всех библиотеках генерящих csv в хакеле используется одинаковый кусок кода для генерации разных интов, написанный брайаном хрен знает когда, с тех пор появились нормальная реализация builder в bytestring, пакет используют builder, но криво надеясь на специализацию и инлайнинг, которые естественно не срабатывают. И а упростив и уменьшив код можно получить минимум в 2 раза лучшую производительность по CPU (не говорю уже про память)
agr
Haskell интересно, а есть ли живые примеры серверов на серванте, у которых в индексе свыше 100000 страниц с контентом?
max630
? Haskell А есть видео где гуру демонстрируют всю мощь хаскельного ИДЕ и как они его на практике применяют.
ndtimofeev
Haskell У меня есть опердень на хаскеле, которая представляет из себя какие-то процессы которые тусят в инстансе ghci. Мне нужна гуйня на Qt, которая будет обмениваться с оперденью json'ом. Количество клиентов — один. Какой бы мне взять ipc чтобы хуяк-хуяк и в госприёмку^Wпродакшен?
agr
Haskell ETL проектное пандемия с одной стороны дичайше сбила некоторые процессы и ожидания. с другой стороны — вызвала самоизоляцию. самоизоляция сузила пространство выборов. это сказалось на исполнении задач.

запустил ETL проект на сабже. продумываю ядро системы.

— прикрутил sqlite-simple. абстрагировал базу данных от типов данных приложения.
— прикрутил servant, к нему куки.
— прикрутил вебсокеты и front к этому делу. бустанул front тем самым нехило так.
— пишу код с бойлерплейтом. вообще наплевать. со временем будет уменьшаться. а может, и нет.

будет ядро — будут и интеграции. много. очень много.
den-po
PHP Haskell Обещали пиво и один из докладов про хаскель. Первое обещание выполнено, жду второго.
Виталя, чо фотка не с первого раза из веба цепляется?

ndtimofeev
Haskell Забыл как гуглабельно называются конструкции вида data T f = T { t1 :: f Хуй, t2 :: f Пизда } в которых потом варьируя f получают штуки различного назначения?
max630
? Haskell А как так: я говорю `stack --resolver lts-14.22 install copilot` и он мне пишет какую-то хуйню про несовпадающие версии? Разве идея стака не в том чтобы такого не было?
ndtimofeev
Haskell Каждый раз когда вижу cofix на московских улицах, пытаюсь придумать сигнатуру, не справляюсь и фрустрирую.
SannySanoff
programming Haskell продуктивность Я вот думал раньше, что Java — она toolable, потому что у ей type-aware автокомплит можно легко сделать, ну типа

string.| // <- autocomplete here

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

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

data Point = Point Int Int deriving Show

let distance (Point x y ) (Point x1 y1) = sqrt $ fromIntegral $ abs(x-x1)+abs(y-y1)

let move (Point x y ) dx dy = Point (x+dx) (y + dy)

let somePoint = Point 10 20

Нажимаешь автокомплит, а оно тебе комплитит не после, а до:

move (Point 3 3) 4 5 | <-- this is cursor

autocomplete:

distance _ $ move (Point 3 3) 4 5 причем выражение твое покоцано, но ясно что оно.

show $ move (Point 3 3) 4 5

— ...... и посортировано значит с умом, по статистике, и позволяет стало быть

нажимаешь distance, и тебе тут же:

distance | $ move (Point 3 3) 4 5 и $ добавлен, и курсор поставлен.

нажимаешь потом еще раз автокомплит, а оно тебе:

somePoint

(Point )

Сложно форматировать псто, но чото легче стало, ибо будущее отчотливо (мне). Вон некий известный хаскельный крендель устроился в jetbrains, не иначе как они задумали что-то.
agr
Haskell рано или поздно, но этот момент приходит, ты начнёшь писать компиляторы.. в моем случае, это патчи в компилятор в JS.
ndtimofeev
Haskell А есть в рантайме ghc костыль чтобы посмотреть на жизненный цикл всех запущенных тредов? Не... Я конечно могу написать свой async, но хотелось бы до этого не доводить.
ndtimofeev
Haskell Добавил роботу немного кококонкурентности. Процесс был очень волнительный поскольку reload был очень hot. Но оказалось что конкурентность воткнутая за пол часа работает как часы. А вот функции стандартной библиотеки я за время перекладывания бумажек с места на место забыл. Ну и логгер стал показывать не то что нужно от жизни такой. Заодно немного почистил в коде амфапарашу доставшуюся мне от меня из прошлого.
agr
Haskell `IORef Settings` в прилoжении, где Settings — целикoм читаются из пачки dhall файлoв, — лютейший вин!
эдакий hot reloading версия лайт.
не счесть, скoлькo нервoв и времени сэкoнoмленo!