0xd34df00d
07.09.2012 10:20 Azoth_primary
ghc 7.6.1. А я только 7.4.2 собрал, эх.
Впрочем, очень клево продвинули систему типов. Только вот http://www.haskell.org/ghc/docs/7.6.1/ht... делает из моего няшного хаскеля какую-то питонятню.
все языки кроме плюсов рано или поздно становятся питоном
,, — запятые
Где почитать диффы системы типов с 7.4?
http://hackage.haskell.org/trac/ghc/wiki... ← такой рафинированно блевотный код, просто мимими. Знаю, что пример.
Deferring type errors to runtime — хорошая фича для билд-сервера какого-нибудь, типа если не компилируется, то запустить тесты без проверки type errors. Может быть вполне ок.
ну, либо снова таки, даже не билд-сервера, а если кто-то сломал где-то типы, пока он не починил чтоб запускать свой код, который кода того чувака не трогает вовсе. вполне жизненно.
Если программист не осилил модульное программирование, то его даже к клаве подпускать нельзя, не то что к коду
у тебя каждая функция в отдельном модуле?
О, лямирка. А пошел-ка ты нахуй.
Ему не до функций, у него еще пстач не обкукареканный.
> который кода того чувака не трогает вовсе
ну, рядом две функции. одну ты пилишь, одну тот чувак.
Если эти функции логически независимы, то они ОБЯЗАНЫ быть в разных модулях.
foldr и какой-нибудь там nubBy логически охуительно независимы, но оба, сцуко, в Data.List.
а если логически зависимы, то что? твой код (/ реализация текущей фичи) обязан вызывать обе?
Да, конечно. Потому что стандартные либы хаскеля, — пережиток тех времён, когда в хаскеле и модульности не было.
> в модуле Data.List
> модульности не было
Если они логически зависимы, то сломанные типы === сломанной программе
И да, почему тогда какое-нибудь *** тоже не в Data.List?
Лямирка, твои способности к поиску простейших крайних случаев для твоих гипотез меня печалят ввиду их полного отсутствия.
Ты идиот? Нет, ну правда, иди и сравни этот Data.List с List 98-ого года
А что ему там делать? Вообще Data.List сам по себе идиотизм, иди и посмотри как всё сделано в нормальном диалекте haskell (типа ddc), а не ровняйся на кучу легаси дерьма
Я не идиот, я возражаю на то, что ваше величество изволит озвучить. Извини за отсутствие телепатических навыков.
А по мне вполне норм, базовые операции со списками все в одной куче, нормик.
ну да, программа сломана, я и не спорю. вопрос только в том, что текущей разрабатываемой фичи поломка программы не касается, а значит пока программист трудится и исправляет свои ошибки типизации, ты можешь несколько часов продолжать работать / запускать свой тест.
Ну да, а то, что там функции имеют не максимально возможный тип в рамках System FC это тоже нормально?
например?
Покажи мне идиота, который будет коммитить в master неработающий код? Для этого есть ветки vcs.
map, тот же озвученный выше foldr. http://hackage.haskell.org/packages/arch...
Вообще там сложнее найти функции, имеющие более или менее адекватный тип. Необходимость в обратной совместимости приводит к такому маразму, что в самом Data.List находится genericLength :: Num i => [b] → i, ибо нельзя нормальному length присвоить такой тип. Совместимость же
ага, и пре-коммит хуки и всё что угодно. но идиоты есть, и они среди нас.