
Andrey
16.02.2018
14:15:37
лан, функцаны я вас не понимаю ) Вроде про жыэсы говорим а вы какието корутины донатации , let foo = do...
Пока.

kana
16.02.2018
14:16:09
лол
в жс есть и let, и do в пропосале

Google

Andrey
16.02.2018
14:16:36
https://i.imgur.com/8Q0oxfh.png
let foo = do { a ? 2 : 3 } while( Math.random() > .5 )
так тоже не работает
куратины это чтото из сишарпов и руби ?

andretshurotshka?❄️кде
16.02.2018
14:17:36
че происходит

kana
16.02.2018
14:17:46
https://github.com/tc39/proposal-do-expressions

Andrey
16.02.2018
14:17:47

kana
16.02.2018
14:18:06
@iyntx

adam
16.02.2018
14:18:06

illiatshurotshka❄️
16.02.2018
14:18:14

Дмитрий
16.02.2018
14:18:48
?

Сергей
16.02.2018
14:19:40

? animufag ?
16.02.2018
14:20:44
смешной реплай

Google

? animufag ?
16.02.2018
14:21:04
хз что смешного
риал штука из шарпов

kana
16.02.2018
14:21:16

illiatshurotshka❄️
16.02.2018
14:21:21

Сергей
16.02.2018
14:21:23

illiatshurotshka❄️
16.02.2018
14:22:19

? animufag ?
16.02.2018
14:24:30
ну да
ну оно ещё на всяких алголах было
и что
блин там же функции наверное называли рутинами
интересно есть ли тут дуальность


kana
16.02.2018
14:27:03
на хаскеле
source$ :: StreamT IO a
-- first
target$ = (f <$> source$) >>= g
-- second
target$ = do
x <- source$
let y = f x
g y
-- and let make it pure
data CmdF a x = G a x
type Cmd a = Free (CmdF a)
g = liftF . G
source$ :: StreamT Cmd a
-- first
target$ = (f <$> source$) >>= g
-- second
target$ = do
x <- source$
let y = f x
g y
-- interpret
runCmd :: Cmd a -> IO a
runCmd = foldF $ --- (G a) -> gFromIO a
а какой там апи у саг я вообще хз, я говорю лишь за идею
а идея там в
- do-нотация для стрима (удобно и полезно)
- вынесение сайд-эффектов в интерпретатор (но профита тут от этого куда маньше чем в хаскеле, потому что интерпретатор захардкорен) (куда менее удобно и полезно в жс)
в хаскеле фри сделан через спископодобную структуру (Free - обобщение списка), в жс генераторы аналогично
@ZeroBias я смог донести свою мысль? Это очередной шаг в нашем старом споре


Дмитрий
16.02.2018
14:36:42
Да
Я уже говорил, идея нормальная, но yield в 2018 вымораживает)
Сейчас запилю тебе maybe с do)

kana
16.02.2018
14:37:48
я вроде как-то находил бабель плагин для fantasy-land-монад

Дмитрий
16.02.2018
14:38:25
Не, без плагинов, так do нотацию людям не продать ?

Google

Дмитрий
16.02.2018
14:38:25
Через await

kana
16.02.2018
14:40:19
https://github.com/five-eleven/monadic
какие попытки я принимал для await для других монад
- я временно переопределял Promise для кейсов, когда он свой
- это не работало с async/await рассахариванием в генераторы, поэтому я брал друго плагин, который расскахаривает async/await в цепочку then
- работало криво и с плагином, поэтому была попытка все заварачивать в Promise, результат не помню
о нашел
это было почти год назад

? animufag ?
16.02.2018
16:00:08
?

andretshurotshka?❄️кде
16.02.2018
16:00:26
await?
while (true) {
const next = await stream$
}
ток это уже pull

Kelin
16.02.2018
16:05:36
О, кто-то тоже на Dracula сидит

kana
16.02.2018
16:05:51
нет, это скрин с репла рамды

Kelin
16.02.2018
16:06:22
Ну ладно

kana
16.02.2018
16:11:36
10 минут пытался найти баг в коде на пурсе
только сейчас понял что дело в .
в пурсе же «<

Google

Denis
16.02.2018
16:13:30
аахах) я тоже обжигался

Vasiliy
16.02.2018
16:13:33
хах, да, бывает, я наоборот стрелочки эти в хацкеле пишу теперь

Denis
16.02.2018
16:13:55

Vasiliy
16.02.2018
16:13:58
-- | Right-to-left composition
(<<<) :: Category cat => cat b c -> cat a b -> cat a c
(<<<) = (.)
-- | Left-to-right composition
(>>>) :: Category cat => cat a b -> cat b c -> cat a c
f >>> g = g . f
ну да
я упоролся по юникод-символам и постоянно подключаю везде
- base-unicode-symbols
- containers-unicode-symbols
нравится
а, блин, сорри, это не джиес

Дмитрий
16.02.2018
16:23:18
Идея в том, что если мы управляем колбэками промиса напрямую, сами, то можем просто не возвращать выполнение обратно вызывающему, если его условие не выполняется

kana
16.02.2018
16:25:16
но я же не говорил про стримы или вообще про фронт
вот я на бэкенде делаю запрос в базу, получаю Maybe<User>, не более

Дмитрий
16.02.2018
16:25:31
А где я говорю про стримы?
> вот я на бэкенде делаю запрос в базу, получаю Maybe<User>, не более
У нас бэкенд так теперь и на фронт шлёт ?

kana
16.02.2018
16:27:12
ну это у вас

Дмитрий
16.02.2018
16:27:18
?♂️

kana
16.02.2018
16:27:35
мой вопрос был простой - есть монада Maybe обычная, можно ли с ней работать через await

Дмитрий
16.02.2018
16:30:22
Мой ответ простой — посмотри в файл logic.js и попытайся не думать о ̶б̶е̶л̶о̶й̶ ̶о̶б̶е̶з̶ь̶я̶н̶е̶ стримах
Особеннно если их там нет
Я специально унёс всю хурму аж в отдельную папку чтобы не на что было отвлекаться
Более того, если что то этот подход — с бэкенда в первую очередь идёт, это он наоборот во фронте в новинку
Но это так к слову. maybe через await непосредственно внутри функций watch

Google

Сергей
16.02.2018
16:37:25
Очень странно выглядит

Дмитрий
16.02.2018
16:37:27
По ряду причин объект возращаемый функцией maybe не должен быть thennable, а вот прописать в нём кейсы-фильтры которые бы резолвились только в случае выполнения условий — всегда пожалуйста

Сергей
16.02.2018
16:38:46
Уел

kana
16.02.2018
16:39:10
как сюда привязать эффектов, домены, эвенты и прочее - я вообще хз

Дмитрий
16.02.2018
16:40:05
Не
Думай
О
Белой
Обезьяне

kana
16.02.2018
16:40:26
так я про стримы ничего и не сказал

Дмитрий
16.02.2018
16:41:31
Ну просто какая разница с помощью чего я набросал интерфейс для примера?)
Задача сводится к траверсу для объектов внутреннего представления

kana
16.02.2018
16:46:29
вот моя конкретная задача и ее конкретное решение

andretshurotshka?❄️кде
16.02.2018
16:48:54
https://github.com/funfix/funland

kana
16.02.2018
16:49:13

andretshurotshka?❄️кде
16.02.2018
16:49:22
просто