
kana
02.10.2017
20:02:09
короче, хаскель как язык очень неявный
он кажется очень простым, но его ленивость переворачивает вообще все, что можно
ты пишешь код в одном порядке, а он выполняется совсем в другом и извернуто, причем внешне это не очень явно
это я про RState)

Google

Denis
02.10.2017
20:15:33
везде дерево
а у хаскель граф

Dmitry
02.10.2017
20:49:03
https://github.com/citycide/babel-plugin-partial-application#lambda-parameters
выгляидт прикольно

Kelin
02.10.2017
21:27:17
ля
https://gist.github.com/Kelin2025/4515a9d17e27e73e082444d9a159b63f
Заилил такую темку
Вот думаю теперь, удобно ли будет хэндлить ошибки в нем?
Ну тип вдруг где-то в середине прососалось

Дмитрий
02.10.2017
21:31:11
pipeP в рамде
А вообще это полумеры, надо просто сразу брать фьючерсы

Kelin
02.10.2017
21:32:51
pipeP только промисы принимает
то есть ты не можешь смешивать с обычными коллбэками

Denis
02.10.2017
21:37:12

Google

Kelin
02.10.2017
21:38:22

Denis
02.10.2017
22:01:19
https://www.youtube.com/watch?v=4CRbezZDb8Y

kana
02.10.2017
22:03:51
потому что жсная магия, из-за которой потом ничего в коде не понятно, как оно вообще работает
это как Promise#then, который сразу и map, и chain
Это из той же категории, где и приведение типов с ==, от чего все бегут

Kelin
02.10.2017
22:36:58
Та в смысле магия
Где тут магия-то
Тот же Promise.all, только с вставками в виде обычных функций

Denis
02.10.2017
22:37:52
нет
напиши это в строгом языке

Kelin
02.10.2017
22:44:27
Ну я же не в строгом языке, посему хуле нет-то

kana
02.10.2017
23:30:42
@xgrommx вспомнил, как ты однажды этот пакет кидал - https://hackage.haskell.org/package/fixplate-0.1.7/docs/Data-Generics-Fixplate-Morphisms.html
я его посмотрл, там para и para' имеют не просто разную сигнатуру, они и ведут себя принципиально по разному
и para' вообще неверно работает)

Владимир
03.10.2017
00:54:44

Дмитрий
03.10.2017
00:55:43

Владимир
03.10.2017
01:03:14
Забыл про мэпы, в которых ключи объектами бывают
Да, тогда это имеет смысл
Удивило что ключ в простом объекте может быть string или symbol
Показалось лишней операцией определения типа

Google

Дмитрий
03.10.2017
01:08:47
Но вообще я пожалуй больше не буду использовать объекты как такие вот мапы, уж больно неудобно и в тайпскрипте и в флоу, и в перспективе удобнее не станет
Только нормальные Map

Владимир
03.10.2017
01:13:33
А флоу получается разделяет обращение к свойству объекта передавая строку или число?

Дмитрий
03.10.2017
01:14:40
В смысле разделяет??

Владимир
03.10.2017
01:16:39
Эти записи равнозначны
Obj[1]= "a"
Obj["1"]="a"
Как при записи так и при обращении к свойству
Но во флоу в примере мы все равно указываем тип как намбер

Дмитрий
03.10.2017
01:18:09
Против чего флоу и создавался)

Владимир
03.10.2017
01:19:27
Ага, понял, спасибо

andretshurotshka?❄️кде
03.10.2017
02:43:50
https://github.com/TylorS/typed-stream
TylorS как gcanti упоролся
каждый день новая typed-* либа

Дмитрий
03.10.2017
03:49:49
?

andretshurotshka?❄️кде
03.10.2017
04:34:13
splitEither<A, B>(either$: Stream<Either<A, B>>): [ Stream<A>, Stream<B> ]
?

Даниил
03.10.2017
05:12:27

andretshurotshka?❄️кде
03.10.2017
05:39:33

Denis
03.10.2017
08:27:16
para :: Recursive t => (Base t (t, a) -> a) -> t -> a

Google

Denis
03.10.2017
08:28:25
просто тут более общий Base
para :: Functor f => (f (Mu f, a) -> a) -> Mu f -> a
идея таже
а вот para' более естественна потому что ничего в ЛИ не было кроме стрелок
https://github.com/ekmett/recursion-schemes/blob/master/Data/Functor/Foldable.hs#L512
предполжим теперь что наш Recursive t это Functor f => Fix f
para :: Functor f => (Base (Fix f) ((Fix f), a) -> a) -> (Fix f) -> a
исходя из того, что базовым функтором для f есть Base (Fix f) то можно заменить и получим
para :: Functor f => (f(Fix f, a) -> a) -> Fix f -> a
а зная что Mu < Fix < Nu то вот тебе тоже самое, просто у Кметта более обобщенно, не только про Fix,Nu,Mu и можно придумать изоморфизмы и через что-то другое
например базовым функтором для списка может быть
data ListF a b = NilF | ConsF a b
type instance Base (List a) = ListF a
ну и понятно сделать представителем Functor, Foldable,Traversable,Recursive, Corecursive

kana
03.10.2017
09:23:40

Denis
03.10.2017
09:24:59
ну как бы это две взаимообратные штуки)
((x => (g => f => xs => length(xs) < 1 ? [] : [f(head(xs)), ...g(f)(tail(xs))])(y => x(x)(y)))(x => (g => f => xs => length(xs) < 1 ? [] : [f(head(xs)), ...g(f)(tail(xs))])(y => x(x)(y))))(x => x * 10)([1,2,3])
((x => (f => xs => length(xs) < 1 ? [] : [f(head(xs)), ...x(x)(f)(tail(xs))]))(x => (f => xs => length(xs) < 1 ? [] : [f(head(xs)), ...x(x)(f)(tail(xs))])))(x => x * 10)([1,2,3])
и все это соберется в
[10,
...[20,
...[30,
...[]
]
]
]
кому интересно средуцируйте с нуля
Y(g => f => xs => length(xs) < 1 ? [] : [f(head(xs)), ...g(f)(tail(xs))])(x => x * 10)([1,2,3])
где Y = f => (x => f(y => x(x)(y)))(x => f(y => x(x)(y)))
ну и const map = Y(g => f => xs => length(xs) < 1 ? [] : [f(head(xs)), ...g(f)(tail(xs))])

Kelin
03.10.2017
11:31:24
Ебаный ад

illiatshurotshka❄️
03.10.2017
11:32:14
зачеммммм

Denis
03.10.2017
11:33:41
сделать бета редукцию)

Google

Denis
03.10.2017
11:34:25
зато не нужна явная рекурсия

andretshurotshka?❄️кде
03.10.2017
11:41:07
лямбда бота надо запилить

Kelin
03.10.2017
11:46:50

Дмитрий
03.10.2017
11:47:56

Denis
03.10.2017
11:48:27

Kelin
03.10.2017
11:51:23

Дмитрий
03.10.2017
11:53:33

Denis
03.10.2017
11:55:16
полный файл с шагами https://gist.github.com/xgrommx/e7b69527662bbb0f5443ce8ca4882b72

Alex
03.10.2017
12:12:39
по-моему прикольно??
не знаю стоит ли такое в продакшн, но для себя - просто прекрасно

Denis
03.10.2017
12:14:51
это же только начало для рекурсивных схем

Павел
03.10.2017
12:25:28
Есть кто из Тулы?

? animufag ?
03.10.2017
15:34:09
кстати ребзя, вас это почти никак не касается но думаю может заинтересовать
https://github.com/47deg/KEEP/blob/7494c84af180a00cd91e6bd0f86f3c7db0758757/proposals/type-classes.md
ну и вообще в слаке эту инициативу поддерживает елизаров

illiatshurotshka❄️
03.10.2017
15:35:09
тайплкассы без адт?

? animufag ?
03.10.2017
15:35:49
https://kotlinlang.org/docs/reference/sealed-classes.html

illiatshurotshka❄️
03.10.2017
15:36:29
ого