
Denis
16.02.2018
00:55:10
import Data.Functor.Kan.Ran
newtype ConstT r f a = ConstT { runConstT :: f r }
type Observer a = a -> IO ()
type Observable a = Ran (ConstT () IO) (ConstT () IO) a
makeObservable :: (Observer a -> IO ()) -> Observable a
makeObservable f = Ran $ \k -> ConstT (f (runConstT . k))
subscribe :: Observable a -> Observer a -> IO ()
subscribe r f = runConstT (runRan r (ConstT . f))
obs = makeObservable $ \observer ->
do observer 1
observer 2
main :: IO ()
main = subscribe obs print

andretshurotshka?❄️кде
16.02.2018
00:55:17
kan ran

Denis
16.02.2018
00:55:59
а все потому, что правое расширение Кана есть обобщение всех возможных continuations

andretshurotshka?❄️кде
16.02.2018
00:56:35
так ето любую монаду можно сделать?

Google

Denis
16.02.2018
00:56:53
только ту, что continuation

kana
16.02.2018
00:57:12
ххм

Denis
16.02.2018
00:57:15
ContT, Cont, Yoneda, и тд

andretshurotshka?❄️кде
16.02.2018
00:57:36

Denis
16.02.2018
00:57:59
type Cont r a = Ran (Const r) (Const r) a
type Yoneda f a = Ran Identity f a
type Codensity m a = Ran m m a
type State s a = Ran ((->)s) ((->)s) a

andretshurotshka?❄️кде
16.02.2018
00:59:14
куда бежишь

Дмитрий
16.02.2018
01:03:27
Как я и предполагал изначально, push и pull стримы имеют между собой фундаментальные различия

Denis
16.02.2018
01:04:23
ну идея a -> IO () это одинаково и для пул и для пуш вроде) это я про конзюмер

Google

Дмитрий
16.02.2018
01:04:55
Я просто думаю вот это — не совпадение)

Denis
16.02.2018
01:05:37
все в фп не совпадение)

andretshurotshka?❄️кде
16.02.2018
01:10:22
о ноу
а два раза вперед это назад?)

Denis
16.02.2018
01:12:37

andretshurotshka?❄️кде
16.02.2018
01:16:33
/pidor@SublimeBot

Sublime Bot
16.02.2018
01:16:34
Согласно моей информации, по результатам сегодняшнего розыгрыша пидор дня - Ilia!

Дмитрий
16.02.2018
01:19:53
?

andretshurotshka?❄️кде
16.02.2018
01:20:46
когда пишешь фп в жс

Дмитрий
16.02.2018
01:22:24
фрп

andretshurotshka?❄️кде
16.02.2018
01:22:56
point free

Дмитрий
16.02.2018
01:23:25
pointless

andretshurotshka?❄️кде
16.02.2018
01:23:39
pointsass

Denis
16.02.2018
01:24:00
стаканомвглаз

andretshurotshka?❄️кде
16.02.2018
01:24:07
pointjss

Дмитрий
16.02.2018
01:24:16

andretshurotshka?❄️кде
16.02.2018
01:24:24
ста кана

Denis
16.02.2018
01:25:25
интересно если итератор дуален обзервабл то можно как-то через левое расширение кана выразить итератор

andretshurotshka?❄️кде
16.02.2018
01:25:45
ДУАЛЬНОСТЬ
опять

Google

Denis
16.02.2018
01:26:04

andretshurotshka?❄️кде
16.02.2018
01:26:05
коитератор

Дмитрий
16.02.2018
01:26:07

Denis
16.02.2018
01:26:19
ну это да
я про выражение через обобщения расширений кана

andretshurotshka?❄️кде
16.02.2018
01:28:24
обзерваблы это просто расширения стакана

kana
16.02.2018
01:28:27
блять
хуйней занимаетесь
нужны пропсы прокидывать
и пиксели двигать

Ҫѐҏӗѫӑ
16.02.2018
01:28:41
стакан наполовину полон

kana
16.02.2018
01:28:45
а не выражать одну хуйню через другую

Дмитрий
16.02.2018
01:29:21

Denis
16.02.2018
01:29:32

andretshurotshka?❄️кде
16.02.2018
01:29:37

Denis
16.02.2018
01:30:54

Ҫѐҏӗѫӑ
16.02.2018
01:31:18

Denis
16.02.2018
01:32:27
13 млрд лет?

kana
16.02.2018
01:32:41
чат настолько изменился, что некоторые могли решить, что это новый чат

Google

Ҫѐҏӗѫӑ
16.02.2018
01:32:50
вроде из-за меня в том чиле скобки добавились)

andretshurotshka?❄️кде
16.02.2018
01:33:05
рекурсивные расширения схем кана

Ҫѐҏӗѫӑ
16.02.2018
01:33:11
FRP и джаваскрипт тут продвигали
это еще про штальца либу было

Denis
16.02.2018
01:33:24
правое расширение глаза

andretshurotshka?❄️кде
16.02.2018
01:33:33
cycle.js чат это

Ҫѐҏӗѫӑ
16.02.2018
01:33:39
дада
Денис, сайклжс
ФРП!
такие дела
им повезло что тебя тут не было)

andretshurotshka?❄️кде
16.02.2018
01:35:37
кому?)

Ҫѐҏӗѫӑ
16.02.2018
01:35:42
вам
пришлось бы переименовать в недофункциональное сборище гуманитариев)

Denis
16.02.2018
01:37:32
а ты в вебасембли переметнулся?)

Ҫѐҏӗѫӑ
16.02.2018
01:38:01
ну как переметнулся. в него нельзя переметнуться

kana
16.02.2018
01:38:27
если способ указать генерики для функции?

Дмитрий
16.02.2018
01:38:29
Угораздило?)

kana
16.02.2018
01:38:36
f<number>() ?

Дмитрий
16.02.2018
01:38:44
???

Google

kana
16.02.2018
01:39:33
type F<A> = () => A;
(f: F<number>)()?

Дмитрий
16.02.2018
01:40:02
Типа того по ходу

andretshurotshka?❄️кде
16.02.2018
01:40:35
так флоу ВЫВЕДЕТ ТИП
зачем вам генерики вообще

Ҫѐҏӗѫӑ
16.02.2018
01:40:59
потому что можно

Дмитрий
16.02.2018
01:41:24
Это как с котом?

Ҫѐҏӗѫӑ
16.02.2018
01:41:35
а как с ним?

kana
16.02.2018
01:41:49

Ҫѐҏӗѫӑ
16.02.2018
01:42:08
из ничего. инь янь

kana
16.02.2018
01:42:08
аргументов нет, по контексту не ясно

Дмитрий
16.02.2018
01:42:22

Ҫѐҏӗѫӑ
16.02.2018
01:42:31
а, да

Denis
16.02.2018
01:42:38

Дмитрий
16.02.2018
01:43:28
без побочных сайд-эффектов ™️

Ҫѐҏӗѫӑ
16.02.2018
01:43:41
сайд-эффекты <3

Denis
16.02.2018
01:44:35
едвард-кметты

andretshurotshka?❄️кде
16.02.2018
01:44:46
declare function f<A>(): A
const a: number = f()

Дмитрий
16.02.2018
01:45:14