Oleg
ничего не валится, но попроую убрать и посмотрю что получится
ну потому что по дефолту стэк в GHC гигантский и свалить в нормальном приложении его непросто, зато на задачке на codeforces легко можно почувствовать разницу
Alexander
optparse-applicative если аппликативные и position free
Alexander
@voidlizard от foldl-ов имеет
Alexander
никто их не оптимизирует
Alexander
Oleg ну стек маленький, но расширяемый (блин как это называется), в общем блоками он
Dmitry
я давно этого не делал, но смутно помню, что все мои попытки заменять foldl на foldl' заканчивались ничем, т.е никакого профита не давали
Oleg
Oleg ну стек маленький, но расширяемый (блин как это называется), в общем блоками он
я помню, когда у меня вывалился, ghc сказал что я потратил 16 MB или типа того, что гораздо больше стеков во всяких strict языках
Alexander
ну есть сишный стек
Alexander
его тоже можно потратить, но его тратит далеко не все
Alexander
сейчас его таки сделали ограниченным, раньше не так было
Alexander
можно через -K задать
Oleg
можно через -K задать
вот вот, он мне так же сказал, когда вывалилс
Alexander
qnikst@qwork ~ $ ./1 +RTS -K1M 1: Stack space overflow: current size 33624 bytes. 1: Use `+RTS -Ksize -RTS' to increase it. qnikst@qwork ~ $ ./1 +RTS -K10M 1: Stack space overflow: current size 33624 bytes. 1: Use `+RTS -Ksize -RTS' to increase it. qnikst@qwork ~ $ ./1 +RTS -K100M 1: Stack space overflow: current size 33624 bytes. 1: Use `+RTS -Ksize -RTS' to increase it.
Alexander
неожиданно
Alexander
на програмке которая жрет стек
Alexander
qnikst@qwork ~ $ cat 1.hs import Data.List main = print $ foldr (+) 0 [1..100000000]
Artyom
как на арче скомпилировать библиотеку со старым GHC (7.6, например)?
Влод
(точно не помогу) проблема в том что неоткуда достать старый ghc?
Artyom
проблема в том, что а) неоткуда достать старый ghc, б) я не знаю, как сказать кабалу/стеку использовать старый ghc
Влод
кажется все эти lts начинают с ghc 7.8 хотя опция выбора ghc там вроде была. например когда используешь ghcjs
Влод
https://docs.haskellstack.org/en/stable/yaml_configuration/#compiler
Влод
но вообще это более глобальная проблема у арча: что делать если нужна версия постарее. я когда то решил что проще будет собрать самому, чем разбираться, а потом перешёл на убунту
Dmitrii
как на арче скомпилировать библиотеку со старым GHC (7.6, например)?
А зачем компилировать со старым ghc? Насколько актуально вообще поддерживать настолько старый ghc?
Artyom
если честно, я не знаю, насколько актуально. Ну и когда его хоть немножко сложно поддерживать, я его не поддерживаю но обычно у меня главный источник трудностей – то, что приходится билда на тревисе долго ждать, чтобы какой-нибудь ворнинг пофиксить :) если смогу локально тестить, станет легко поддерживать
Alexander
@lightgreen поставить в префикс генту, а дальше понятно
Alexander
вместо генты можно nix
Alexander
кабалу просто - with-ghc
Alexander
со стеком хуже, надо найти подходящий снапшот, где этот ghc
Влод
кажется все эти lts начинают с ghc 7.8 хотя опция выбора ghc там вроде была. например когда используешь ghcjs
Влод
https://docs.haskellstack.org/en/stable/yaml_configuration/#compiler
Alexander
зато если найти есть шанс что он даже ghc поставит (но не очень большой, скорее всего системные либы с которыми он хочет линковаться - поедут, я не думаю, что для бинарных релизов они делают кучу вариантов ghc
Artyom
о, я нашёл, что в AUR есть все версии (7.4 – 7.10) теперь с with-ghc будет всё ок, наверно спасибо
Ilya
А здесь есть кто-нибудь, кто писал больше 10k loc на Haskell'е в каком-нибудь проекте?
Alexander
нету конечно, таких вообще не существует
Alexander
т.к. пишут только факториалы
Alexander
а факториал это максимум строчек 200 и то если упороться
Нурлан
10k loc это типа 10 000 строчек кода?
Alexander
да
Dmitrii
нету конечно, таких вообще не существует
Почему не существует? В коде ghc очень много строк ;) не уверен, что существовал хотя бы один момент времени, в котором от одного человека было бы 10К строк кода, но думаю, что несколько точно успело написать. Сдам @lightgreen. У него есть ;) У меня, к сожалению, поменьше...
Alexander
@chshersh потому, что вопрос маловероятно что подразумевает нормальный ответ
Alexander
может с какой-то вероятностью это пришли попытаться захайрить людей, но скорее всего начнется обычная история
Alexander
вон в большом проекте (который один из тех что пишем), не считая того, что в связанных живущих в других репозиториях у меня 43,278 ++ / 28,624 -- по статам гитхаба
Alexander
но будто это о чем говорит
Alexander
все равно показать не смогу и всем придётся поверить
Alexander
поэтому я дал абсурдный ответ, если человек пришёл потроллить, будет не интересно, если серьёзно, то сформулирует вопрос и тему получше
Alexander
ну это за год примерно, может полтора
Alexander
@ilyaraz так в чем именно вопрос?
Ilya
ну вопроса конкретного у меня нет: но интересно by and large, насколько легко вносить локальные изменения в большой проект
Alexander
от проекта сильно зависит, во всяком случае приятнее, чем во многих языках
Ilya
я ничего серьезного на Хаскелле не писал, но а приори кажется, что любое нетривиальное изменение влечет цепочку изменений
Alexander
есть некоторые нехорошие моменты в дизайне, которые могут привести к тому, что придётся какое-то изменение много где протащить
Alexander
если накосячить при проектировании
Alexander
но такие изменения обычно механические
Ilya
ну да, вроде монаду навесить?
Anatolii
в других языках ты узнаешь о том что эти изменения надо сделать сильно позже
Anatolii
возможно уже на проде
Alexander
например, если чистый код был, который оказывается не чистым, но это обычно локализовано
Alexander
или если лишние параметры/state явно таскались и хочется продолжать
Alexander
впрочем все равно приятнее, чем во многих языках, где боишься что-то тронуть, чтобы все не развалилось
Alexander
тут можно и достаточно большой рефакторинг делать
Alexander
может у кого другой опыт
Alexander
а, товарищи их serakel и hexresearch?
Alexander
sorry "serokel"
Alexander
минус фирмы названной от фамилии, очепятаешься и стыдно становится
Artyom
serokell actually
Alexander
!!
Alexander
от блин
Alexander
совсем стыдно
Ilya
единственный раз, когда я пытался написать что-то не совсем крошечное, в какой-то момент оказалось, что в самой внутренней функции нужны случайные числа, и было все очень tedious исправлять
Ilya
то есть это была не катастрофа отнюдь, но кажется, что в больших проектах это все должно умножаться на 10
Alexander
скорее наоборот
Ilya
сорри, я не имел ввиду троллить совершенно, но наверняка это стандартная проблема
Alexander
в больших проектах больше взаимодействий и эффектов видно сразу
Alexander
в итоге все достаточно модульно получается, и не разбегается по проекту
Ilya
ок, понял
Ilya
для меня такое утверждение выглядит удивительным, но остаётся только поверить :)
Alexander
это те где для остальных нужно написать 16 строк чтобы скомбинировать готовые либы?