@haskellru

Страница 372 из 1551
Alexander
31.08.2017
10:07:42
поскольку информации для вывода типа xs недостаточно, то в ghci выводится тип по правилам: 1. если есть Num a => то Int 2. если нету то ()

в общем тип у xs :: [()]

для него очевидно xs == reverse xs

kana
31.08.2017
10:08:31
Хм, ну да, логично

Google
Евгений
31.08.2017
10:09:20
kana
31.08.2017
10:09:48
В данном случае Eq a => [a]

Евгений
31.08.2017
10:10:17
Ага, сорь

kana
31.08.2017
10:12:59
Полагаю, для теста нужно какое-то конкретное значение, наверное только () захардкорен

Alexander
31.08.2017
10:27:19
Prelude> toEnum $ fromEnum '2' + fromEnum '2' *** Exception: Prelude.Enum.().toEnum: bad argument

Prelude> 1+ (toEnum $ fromEnum '2' + fromEnum '2') 101

Prelude> 1.0+ (toEnum $ fromEnum '2' + fromEnum '2') 101.0

я ж написал правила выше?

Denis
31.08.2017
11:40:51
https://github.com/iostreamer-X/FuncShell

Yuriy
31.08.2017
12:04:28
это специфика ghci

Alexander
31.08.2017
12:05:16
и это написал, не?

Denis
31.08.2017
12:28:57
monad-classes or freer?

Anatolii
31.08.2017
13:21:42
Ether посмотри еще

Google
Denis
31.08.2017
13:23:23
Aleksey
31.08.2017
13:23:39
По Эфиру можно даже автора поспрашивать :)

Ether, это тем, кто хочет стэкать монадки в сложные стэки

Anatolii
31.08.2017
13:24:40
Ну как и monad classes

Denis
31.08.2017
13:25:02
Aleksey
31.08.2017
13:25:19
mtl же!

Anatolii
31.08.2017
13:25:31
https://int-index.github.io/ether/

Denis
31.08.2017
13:25:51
transformers -> mtl -> monad-classes or freer

Aleksey
31.08.2017
13:26:09
Ether стоит смотреть, если уже освоил mtl

Anatolii
31.08.2017
13:26:33
Наверное в большинстве случаев mtl хватает

Aleksey
31.08.2017
13:27:30
mtl хватает, пока не захочешь несколько ридеров и т.п.

Anatolii
31.08.2017
13:27:55
Ну я поэтому и написал в большинстве случаев

Aleksey
31.08.2017
13:28:09
Эфир как раз решает задачу стэкания нескольких трансформеров одного вида

Вощм, надо Влада позвать - кто, как ни автор, сможет продать либу? :)

Anatolii
31.08.2017
13:28:57
Как тут уже писали с ReaderT env IO очень много можно делать

Aleksey
31.08.2017
13:29:30
RWST IO хватит всем!

Anatolii
31.08.2017
13:29:42
Хехе

Alexander
31.08.2017
13:29:50
это та из-за которой код serokel не собирался на меньше чем 32гб оперативки?

ReaderT e IO не слабее RWST IO

Google
Aleksey
31.08.2017
13:30:54
Ну ок, IO хватит всем :)

Alexander
31.08.2017
13:31:16
IO эффекты не отражаеи

Konstantin
31.08.2017
13:33:28
хотите немного извращений? а то вы уже, наверное, забыли как выглядит настоящий мир

> m.utc("08/04/1984-23:00", "DD/MM/YYYY-HH:mm", true).month() 3

Yuriy
31.08.2017
13:49:01
PHP?

Konstantin
31.08.2017
13:53:59
js ?

Andrew
31.08.2017
13:55:17
Я так знал =D

Aleksey
31.08.2017
13:57:33
Ether

Konstantin
31.08.2017
13:57:43
https://github.com/moment/moment/issues/3547

и это не баг!

Denis
31.08.2017
13:58:12
у меня тут нода решила 1.5 гига съесть, что-то в ноде 9 не то

Donat
31.08.2017
14:00:25
вот так заходишь на канал Haskell, а люди тут на js пишут :)

Andrew
31.08.2017
14:01:41
Балуются просто

Index
31.08.2017
14:12:33
Вощм, надо Влада позвать - кто, как ни автор, сможет продать либу? :)
Главная фича Ether в том, что можно запускать слои трансформеров, не выходя из абстрактной монады.

А последнее время я вообще склонен считать, что наибольший power2weight ratio у обычных transformers (даже не mtl), с rigid stacks. Это для всяких эффектов типа Reader, State, Except. А для эффектов бизнес-логики (то, что надо мокать), лучше mtl-style классы. В итоге имеем стек вроде (BusinessLogic1 m, BusinessLogic2 m) => StateT s (ExceptT e m) a, где m в конце будет ньютайпом над ReaderT AppState IO (как Снойман проповедует). Один ньютайп для тестов, другой для реального исполнения кода

Ilya
31.08.2017
14:16:55
а расскажите, что такое эта ваша бизнес-логика

Index
31.08.2017
14:18:51
Наверное это неудачно я выразил, назвав бизнес-логикой. Идея в разделении чистого control-flow (ReaderT чтоб передать еще параметр, ExceptT чтобы иногда выйти из функции, StateT чтобы пробрасывать промежуточное состояние), и задач выполняемых приложением взамиодействуя с внешним миром (в БД сходить, запросы сетевые послать)

Первые мокать и не хочется, потому что это как раз то, как приложение работает. А второе хочется, поэтому его в mtl-style класс надо спрятать.

Ilya
31.08.2017
14:20:31
да не, я правда не знаю, что значит этот термин:) хотя видел его сотни раз. вот интересно, кто что под этим понимает

Google
Ilya
31.08.2017
14:20:39
статья в википедии ясности не принесла

слишком общо

Index
31.08.2017
14:21:52
Ну представь, что ты пишешь код на DSL, идеально заточенным под твою доменную область. Всякая сериализация/десериализация, консёрны с persistence, и т.д. — все это уже за тебя делают. Вот на таком DSL ты только бизнес-логику приложения описываешь. То есть то, что оно концептуально должно делать.

А на практике в итоге ты пишешь еще в 4 раза больше кода просто для инженерных задач, которые нужны для того, чтобы эту бизнес-логику на существующем языке и с существующими технологиями выразить

Ilya
31.08.2017
14:24:10
идея понятна, спасибо

Alexander
31.08.2017
14:24:58
всегда говорил что надо использовать просто tf

transformers и.е.

Denis
31.08.2017
14:25:18
Главная фича Ether в том, что можно запускать слои трансформеров, не выходя из абстрактной монады.
все это красиво, но только вот как и с пакетами Кметта нифига нет ни примеров ни юзкейсов использования

Ilya
31.08.2017
14:25:27
блин, это у меня получается в программах сплошные инженерные задачи решаются...

Denis
31.08.2017
14:25:35
всегда говорил что надо использовать просто tf
и делать лифт на лифте и лифтом погонять?

Index
31.08.2017
14:26:55
все это красиво, но только вот как и с пакетами Кметта нифига нет ни примеров ни юзкейсов использования
Если у тебя нет для этого юзкейсов, то можно и не использовать ??‍♂️ Мне надо было — я сделал

Alexander
31.08.2017
14:27:35
это так страшно?

Index
31.08.2017
14:28:00
и делать лифт на лифте и лифтом погонять?
У тебя обычно больше пары слоев не будет, в чем проблема?

Да и я хочу исследовать идею монадных морфизмов, о которых Кметт недавно выступал, чтобы лифтов не было

kana
31.08.2017
14:32:07
можно подробнее?

Denis
31.08.2017
14:32:39
ну вот с фриер бесплатно можно монаду сделать

Index
31.08.2017
14:33:14
Все эти extensible effects не думают о двух вещах, о производительности и о ContT

А соответственно остаются игрушками

Denis
31.08.2017
14:33:55
Все эти extensible effects не думают о двух вещах, о производительности и о ContT
вроде о производительности уже норм, или не? все эти открытые объединения

Google
Index
31.08.2017
14:34:32
Компилятор умеет мономорфный StateT преобразовывать практически в код, который делается императивными компиляторами.

Всякие freer решили проблемы с печальной асимптотикой, но это не дает raw performance, это асимптотика

а о ContT, много им пользуются?
Вопрос не в том, насколько часто он нужен, а в том, что ты будешь делать, когда понадобится. Терпеть и на трансформеры переписывать, вот что

Denis
31.08.2017
14:37:45
но я думаю Киселев когда-то допилит свою идею

Index
31.08.2017
14:40:20
Там нечего допиливать, идея изначально ограниченная

Он по условию задачи занимается алгебраическими эффектами, но не все эффекты алгебраические.

Это может стать полезным фреймворком в каких-то условиях, но никогда не заменит трансформеры

Denis
31.08.2017
14:46:00
а какая идея не ограниченная?

а вы что думали?))) https://gist.github.com/gcanti/4edc2c46b37fb86cdf1234469d9734cc

Index
31.08.2017
14:48:40
Denis
31.08.2017
14:50:21
а mtl?

или фандепы это оверхед?

Евгений
31.08.2017
14:54:09
Alexander
31.08.2017
14:56:23
mtl, monan-classes и т.п. это все трансформеры

просто более высокий интерфейс

Denis
31.08.2017
15:00:18
а трансформеры могут больше одного ридера?

Index
31.08.2017
15:01:29
А что значит "алгебраические" эффекты? Выросшие не из IO?
Это когда ты описываешь алгебру эффектов как что-то с кайндом * -> *, а потом запихиваешь это в free/freer и получаешь монаду.

Алегбра эффектов описывает операции, которые ты можешь делать.

Alexander
31.08.2017
15:02:25
@xgrommx хоть 100

ты ж руками в нужный уровень лезешь

Страница 372 из 1551