
Denis
29.08.2016
09:38:48
Если речь вот об это фигне: https://github.com/commercialhaskell/stack/issues/2534
То я ЗА.
Хотя, опять же, повторюсь, инструмент еще довольно нейдобен, чтобы на него все завязывать. Надо пилить, пилить и еще раз пилить.

Quet
29.08.2016
09:44:06
какие есть более удобные альтернативы?

Denis
29.08.2016
09:44:36
А кто-то или что-то заставляет прямо сейчас сделать выбор?

Google

Quet
29.08.2016
09:45:11
а когда? через 10 лет? )

Denis
29.08.2016
09:45:17
Раньше вон. стека не было. Но в линуксах не стремились что-то на cabal завязывать работу с пакетами хаскелвыми

Quet
29.08.2016
09:45:25
задачи как бы надо уже сейчас решать

Denis
29.08.2016
09:45:37
А они как бы не решаются никак иначе??

Quet
29.08.2016
09:45:53
ну я ж говорю -- какая более удобная альтернатива?

Denis
29.08.2016
09:46:31
Текущий вариант оставить. Такое мое мнение. Пока не допилят стек или не появится нечто более удобное
А то раньше был Cabal, который WriteOnly по факту был (один раз поставил пакеты и хрен удалишь, а часто и хрен обновишь), так и остался стек writeonly. Прогресса особого я не заметил. Да, чуть удобнее стало собирать окружение для софтины. И все.

Quet
29.08.2016
09:48:51
раньше было просто нельзя жить
потом появились сендбоксы и жить стало можно хоть как-то

Denis
29.08.2016
09:48:57
К слову, в Cabal я мог посмотреть установленные версии пакетов. А в стеке что-то не нашел такой возможности

Quet
29.08.2016
09:49:03
со стеком стало прям сильно лучше

Evgenij
29.08.2016
09:51:31

Quet
29.08.2016
09:52:03
да, версии в снапшоте стекеджа прибиты гвоздями
и это очень удобно

Google

Denis
29.08.2016
09:52:51
Вы знаете, я человек консервативный. Мне не импонирует идея переустанавливать весь тулчейн раз в полгода. Без разницы, о каком языке или наборе языков разработки идет речь. И также я понимаю, что в процессе поддержки проекта время от времени возникает необходимость ли желание обновлять этот самый тулчейн, обновлять версии используемых бибилиотек и т.д. А еще я понимаю, что по 1 гигу на каждый проект (как сейчас работает стек, причем только на одну версию lts), это слишком жирно, даже с учетом терабайтных жестких дисков.

Evgenij
29.08.2016
09:53:01
Да да - очень удобно и скорость сборки возрасла многократно

Quet
29.08.2016
09:53:32
ээ по гигу на проект это сендбоксы как раз

Denis
29.08.2016
09:53:35
Охуенное удобство

Quet
29.08.2016
09:53:55
стек шарит между проектами библиотеки

Denis
29.08.2016
09:54:02

Quet
29.08.2016
09:54:35
загляни в папку сендбокса кабала ещё

Evgenij
29.08.2016
09:54:42
Ничего не мешает в stack.yaml прописать то что нужно

Denis
29.08.2016
09:54:49
Не знаю, может это он в коммунистических ОС что-то шарит. В буржуйской винде все копирует.
Он мне никогда не нравился.

Quet
29.08.2016
09:55:56
в общем я конечно понимаю что консерватизм, по гигу на проект (о ужас) и все такое
но говорить что кабал без сендбоксов лучше это какой-то запредельный неадекват )

Denis
29.08.2016
09:56:18
Дак хуже кабал. Я не спорю.

Quet
29.08.2016
09:56:24
а что лучше?

Evgenij
29.08.2016
09:56:25
Незнаю как все ,но я считаю стэк определенным прорывом - чтобы уменьшить боль)

Denis
29.08.2016
09:56:31
Но и то, что есть называть верхом удобства не согласен.

Quet
29.08.2016
09:57:27
ну ты ж понимаешь что это не абсолют? по сравнению со всеми другими вариантами - стек и правда верх удобства

Denis
29.08.2016
09:58:15
Типа синица в руках?

Quet
29.08.2016
09:58:22
если ты думаешь что все очень плохо - напиши свой стек с круассанами и танцовщицами

Google

Denis
29.08.2016
09:59:11
Просто мне непонятно это рвение. Жили-были двадцать лет и тут на тебе, срочно нужно что-то делать, у нас тут стек появился!

Quet
29.08.2016
09:59:21
я ж говорил - решать задачи надо вот сейчас, ждать 10 лет пока появится (если появится) что-то более лучшее какая-то так себе идея
хреново жили эти 20 лет потому что

Evgenij
29.08.2016
09:59:53
И кстати недавно чтото брал из гита хаскельное на пробу - в проекте нет стэк - попробовал сделать стэковским - стэк указал какая проблема - я просто в кабале версию немного либы поправил (что была в lst) и всё работает ))))

Denis
29.08.2016
10:00:12
выглядит как сдача проекта с оговорками, просто потому что сроки поджимают. ?

Quet
29.08.2016
10:00:40
я чёт перестал тебя понимать совсем
какие сроки, какие оговорки?

Denis
29.08.2016
10:00:58
А про какие задачи ты говоришь?
Неужели стек прямо сейчас покрывает все задачи на 100%? Или кто-то обещает, что в ближайшие год-два станет покрывать?
Лично мои задачи он не покрывает.

Evgenij
29.08.2016
10:02:43

Quet
29.08.2016
10:02:45
ок, не пользуйся )

Quet
29.08.2016
10:02:51
напиши свой

Denis
29.08.2016
10:02:57
Да куда там не пользуйся!
Уже в репл через него ходить приходится. Просто потому что удобнее

Quet
29.08.2016
10:03:33
так все же удобнее? )))

Denis
29.08.2016
10:03:48
Так он все же далек от идеала ?

Quet
29.08.2016
10:03:55
"приходится потому что удобнее" это просто пять
утомил, извини )

Denis
29.08.2016
10:04:33
Ладно, работать надо

Google

Alexander
29.08.2016
10:39:24
собираешь с profile потом без -2Гб места
=)
которое не освободить никак кроме полного удаления .stack-work и ~/.stack =)

Quet
29.08.2016
11:12:33
ну что такое 2гб... )

Aldar
29.08.2016
17:04:46
https://www.futurelearn.com/courses/functional-programming-haskell/1/welcome

Alexander
30.08.2016
15:56:41
можно и делать const начиная с какого-то момента
там главное про суть было

Admin
ERROR: S client not available

Maxim
30.08.2016
15:57:27
Сорри, у меня обновление поздно пришло, что это уже далеко в истории группы. Да, согласен

Anatolii
31.08.2016
18:28:17
Ребята, столкнулся с проблемой
есть вот таких 2 тайп класса и по инстансу для них
class (Monad m) => JiraClient m where
jiraUser :: Int -> MaybeT (ExceptT MyErr m) JiraUser
instance JiraClient (State (IntMap JiraUser)) where
jiraUser id = do
db <- get
hoistMaybe $ lookup id db
class (Monad m) => RedmineClient m where
redmineUser :: Int -> MaybeT (ExceptT MyErr m) User
instance RedmineClient (State (IntMap User)) where
redmineUser id = do
db <- get
hoistMaybe $ lookup id db
и есть вот такая функция
func :: (RedmineClient m, JiraClient m) => MaybeT (ExceptT MyErr m) String
func = do
u1 <- jiraUser 1
u2 <- redmineUser 2
return $ show u1 ++ show u2
для IO есть инстансы
и проблем с запуском нету
а вот как запустить с 2-мя разными State я пока не смог додуматься
я пробовал через StateT сделать
но тоже не смог

Alexander
31.08.2016
18:44:43
с мтл так не прокатит, с двумя StateT формально можно если лифты руками сделаешь

Google

Alexander
31.08.2016
18:45:10
можно посмотреть доклад кмета и про monad morphism и посмотреть не запилил ли он это

Anatolii
31.08.2016
18:45:13
лифты в func делать надо?

Alexander
31.08.2016
18:45:47
ну у тебя будет StateT внутри другого

Anatolii
31.08.2016
18:45:53
я понял

Alexander
31.08.2016
18:46:00
и для функций во внутреннем тебе придётся lift писать

Anatolii
31.08.2016
18:46:06
я просто делал StateT instance
для каждого из клиентов
и думал как-то это запустить получится
чтобы внутри func ничего не трогать

Alexander
31.08.2016
18:46:41
вообще были какие-то пакеты с проекциями или тегами
у roche и ещё у кого-то

Anatolii
31.08.2016
18:47:17
как вообще в хаскеле делают такие вещи?
ну вот я хочу изолировать IO и протестировать функцию
ну внутри func могла быть более сложная логика
каким путем идут?
я наверное как-то не так пошел

Alexander
31.08.2016
18:48:34
2 стейта разных в mtl или что именно?

Anatolii
31.08.2016
18:49:18
ну смотри, я хочу написать функцию, которой нужны данные с двух разных сервисов
чтобы протестировать эту логику
мне надо как-то изолировать сервисы
ну в других языках делают интерфейсы
и делают тестовую реализацию