
Александр
29.08.2018
10:53:37
Откуда вы все это знаете :/

Андрей
29.08.2018
10:54:11
простите что вмешиваюсь в умные темы, напомните плиз, а filter у нас не генерализован каким-нибудь классом типов?
и если нет то почему?

Denis
29.08.2018
10:56:18

Google

Denis
29.08.2018
10:57:13
и еще
https://hackage.haskell.org/package/compactable-0.1.2.2/docs/Control-Compactable.html

Андрей
29.08.2018
10:57:33
ага, оно. просто подумалось что почему бы ему не быть, и как всегда в сабже оно уже есть

Denis
29.08.2018
10:58:35
ну и mfilter из Control.Monad
в purescript они объединили несколько идей
https://github.com/LiamGoodacre/purescript-filterable
еще есть
http://hackage.haskell.org/package/filtrable-0.1.0.2/docs/Data-Filtrable.html
но мне по душе, как в пурсе сделано

Ilya
29.08.2018
11:17:59
Типа f . foldr (:) [] и всё (поправлено)

Denis
29.08.2018
11:25:12

Alexander
29.08.2018
11:28:06

Ilya
29.08.2018
11:39:31
что-то не то с этим rewrite rule, кмк

Google

Terminator
29.08.2018
15:51:33
@Readonlys будет жить. Поприветствуем!

kana
29.08.2018
17:57:31
я вижу это невозможным без read например

Ilya
29.08.2018
19:35:52
Не во всех случаях оно разрешимо

Alexander
29.08.2018
22:04:59
а у нас не появилось в современном Haskell возможности выбора по какой типопеременной траверс делать?
скажем у меня есть:
data Foo a b = Foo a | Bar b | Baz Q
я хочу сделать traverse ioA2C >=> traverse ioB2D :: Foo A B -> IO (Foo C D)

A64m
29.08.2018
22:08:20
в generic-lens есть

Denis
29.08.2018
22:08:50
traverse @SomeType ioA2C >=> traverse @SomeType2 ioB2D мб как-то так

Alexander
29.08.2018
22:09:29
@A64m_qb0 а где там?

A64m
29.08.2018
22:10:09
param @1

Denis
29.08.2018
22:10:24
не взлетит же это
ну ты подставь правильно) я просто как пример написать, юзать TypeApplications

Alexander
29.08.2018
22:10:43
TypeApplication же не взлетит
@A64m_qb0 так param @1 сделает мне правильный Traversal, а как мне теперь его "запустить"?

A64m
29.08.2018
22:12:56
?

Alexander
29.08.2018
22:15:42
traverseOf (param @1) function foo ?
так как-то?
@A64m_qb0 ^

Google

A64m
29.08.2018
22:17:10
не понял, зачем тут траверсоф

Alexander
29.08.2018
22:17:57
у меня есть Foo A B, хочу сделать IO (Foo C D) пройдясь (A -> IO C) и (B -> IO D)
или я тут туплю в ночи?

A64m
29.08.2018
22:19:29
traverseOf = id

Alexander
29.08.2018
22:19:41
а
понял

A64m
29.08.2018
22:19:52
param @1 и будет вместо traverse

Alexander
29.08.2018
22:20:03
понял
а если у меня больше вложенность Baz (Foo A B) -> IO (Bar (Foo C D)) ?

A64m
29.08.2018
22:23:23
в Baz зайти сначала

Alexander
29.08.2018
22:24:01
traverse ( (param @1) foo) ?
теперь осталось понять хочу ли я этого всего

Alexander
29.08.2018
22:24:32
но хотя бы идею понял

A64m
29.08.2018
22:25:07
(traverse . param @1) f foo

Alexander
29.08.2018
22:25:26
+
поидее наиболее правильное решение у меня если есть зависимость от контекста, но тогда уже не получится так
сейчас попробую по человечески написать:
data Bar a = Bar U V a
data Baz q b = BazL q | BazR b | Baz
type Q = Bar (Baz K L)
f :: U -> V -> K -> IO Щ
g :: U -> V -> L -> IO Ц
magic :: Q -> IO (Bar (Barz Щ Ц)
@A64m_qb0 ^
имеет ли смысл тут с линзами или не мучаться и case написать

Google

Denis
29.08.2018
22:29:37

Alexander
29.08.2018
22:30:12
если бы оно ещё и все быстро работало, то наверное надо было бы линзы использовать т.к. код проще и убирает бойлерплейт
на самом деле у меня там +1 слой, но это не важно

Admin
ERROR: S client not available

Alexander
29.08.2018
22:31:33
traverse его тупо сохраняет
7 строк вместо 2 :/

Dmitry
30.08.2018
07:35:42
Какая стандартная функция лучше всего подходит под case следующего вида?
x <- case someMaybeValue of
Nothing -> pure Nothing
Just v -> foo v
Где foo имеет тип foo :: a -> IO (Maybe b) (то есть у x в итоге будет тип Maybe b).

kana
30.08.2018
07:37:39
MaybeT IO >>= вроде
fmap join . traverse foo ещё мб

Dmitry
30.08.2018
07:44:40
Я бы хотел ещё короткий код... Что-то в духе x <- runMaybeT $ maybeToMaybeT someMaybeValue <|> MaybeT foo не особо много выигрыша даёт...

Alexander
30.08.2018
07:48:04
maybe (pure Nothing) foo someMaybeValue ?

Dmitry
30.08.2018
07:49:40

A
30.08.2018
07:58:09
https://www.amazon.com/gp/aw/d/1787281396
Вон оно чо
Го и в фп может
Народ, так что же такое фп?
Тут недавно набросы были, что вроде как рекурсия не нужна и фп это скорее теоркат, чем програмирование само по себе

Alexander
30.08.2018
08:03:55
все верно
фп это теоркат, потому что оно про функции а функции это стрелки
да и объекты легко представить себе как функции
а рекурсия и прочие штуки, ну они и в теоркате есть, но не на первом месте

Google

A
30.08.2018
08:05:00
То есть буква П в фп про теоркат?

Alexander
30.08.2018
08:05:21
да

A
30.08.2018
08:05:35
?

Alexander
30.08.2018
08:05:36
словосочетание "прикладная математика" тебе о чем то говорит?

Index
30.08.2018
08:05:51
Не могу понять, какой это уровень иронии

A
30.08.2018
08:06:05
?

Alexander
30.08.2018
08:06:09
я без иронии если что
программирование это раздел математики, фп это теоркат в рамках этого раздела
точнее группа разделов математики

A
30.08.2018
08:06:55
И тут Остапа понесло ?

Alexander
30.08.2018
08:08:23
я в общем то серьезно. Никого же не говорит что инженер занимается сопроматом а не проектирует мост

Index
30.08.2018
08:08:27
Математик видит аналогии, хороший математик видит аналогии между аналогиями, а самые лучше математики не могут отличить ФП и теоркат

Alexander
30.08.2018
08:08:45
а в чем отличие, кстати? ФП это прикладной теоркат