Size: a a a

2021 December 14

AP

Aleksei (astynax) Pi... in Haskell Start
С другой стороны, если к base прибавить пакеты, "которые всё равно все используют", вроде megaparsec, containers, text, mtl, то для очень широкого класса задач их хватит.
источник

[

[BRM]White Rabbit in Haskell Start
нет, задачи в принципе почти не решаются без сторонних либ. Чтоб понять всю ситуацию по гранулярности либ, в хаскеле коммон-юз-массивы в одном стороннем пакете (в прочем, в бейз и не-коммон-юз нету), а их сортировка - в другом.
Я бы сказал, хаскельная стд это смесь приятных примитивов, каких-то билд-ин штук, немножечка комбинаторов, совсем без которых нельзя и мешок легаси (в основном в дизайне самой либы), который, в прочем не то что бы сильно глаза мозолит.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
В стандартной библиотеке лежит то, что можно нечасто обновлять и что не критично привязать к версии компилятора.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Поэтому все коллекции и лежат во внешних пакетах. Кроме списков, поэтому что это базовый кирпичик и без него было бы сложно оставить в base хоть что-то.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Поэтому же ByteString и Text не включены в base. А String включён, потому что это псевдоним для списка символов.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
В PureScript попробовали всё разделить на пакеты. И там вы шагу не можете ступить буквально, не притащив три десятка пакетов, из которых просто Prelude хаскелевская собирается. Такой вот design choice
источник

[

[BRM]White Rabbit in Haskell Start
я если что не жалуюсь. Чем меньше зависимость от придуманного компиляторщиками, тем лучше экосистема языка
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Минусы есть у обоих подходов. Самодостаточная СБ быстро устаревает, зато один раз скачал и можно жить. Ультраминималистичная заставляет скачивать "пол интернета" для каждой песочницы, зато всё можно быстро менять.
источник

FL

Felix Lewandowski in Haskell Start
То есть это всё сторонние библиотеки? Не реализация стандартной библиотеки?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
base — стандартная. Её нельзя не использовать и она привязана к версии компилятора.
источник

[

[BRM]White Rabbit in Haskell Start
стандартное то, напротив чего base
источник

FL

Felix Lewandowski in Haskell Start
Просто в дотнете кучу библиотек с именами вида System.*, и я подумал что в хаскеле это также по назначению поделено
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Пространства имён и пакеты соотносятся как многие ко многим
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Внешний пакет может привнести что-то в System, что-то в Data, что-то в Control
источник

FL

Felix Lewandowski in Haskell Start
Понял, запомню, большое спасибо за ответы
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Можете попробовать пожить с расширением PackageImports. Оно позволяет явно указывать, какой импорт из какого пакета делается. Некоторым нравится
источник

FL

Felix Lewandowski in Haskell Start
Вчера так пробовал делать на каком-то проекте. Выглядит красиво и я так понял помогает избежать некоторых конфликтов имён
источник

[

[BRM]White Rabbit in Haskell Start
это логическое разделение. Control даёт какие-то контроллирующие структуры, Data - структуры данных, System - что-то из работы с осью.
И то, это не ультимативная логика, например Data.Aeson вроде бы не структуры данных даёт.
Ну и соответственно, то что не ложится на эти пространства имён, может любые свои придумать.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Логичное. Но иногда логика ломается и появляются Common.Utils.Common :)
источник

[

[BRM]White Rabbit in Haskell Start
"логическое" /= "логичное"
источник