?

Log in

No account? Create an account
Синтаксический перец rdo-нотации - Дважды мудак [entries|archive|friends|userinfo]
Декларативное рулит

Site Meter

[ website | Мой сайт ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Синтаксический перец rdo-нотации [окт. 2, 2017|10:51 am]
Andy Melnikov
[Tags|, , ]

А давайте для
foo = (\bar -> quux) =<< baz
сделаем
foo = rdo
   quux
   bar <- baz
!

В этом направлении, можно пойти дальше и сделать функциональную ду-нотацию:
y = fdo
 x
 g
 f
как сахар для
y = f (g x)
и
z = frdo
 f
 g
 x
как сахар для
x & g & f
Есть кстати http://taylor.fausak.me/flow/ идущая в этом направлении:
x |> f = x & f
f <| x = f $ x
We need to go deeper™!
x |>= f = x & f
x |> f = f
f |>=> g = f >>> g


- значения Functor Applicative Monad
Application x |>= f x $>= f x *>= f x >>= f
Sequencing x |> y x $> y x *> y x >> y
Composition g |=> f g $=> f g *=> f g >=> f



- значения Functor Applicative Monad
Application a -> (a -> b) -> b f a -> (a -> b) -> f b x *>= f m a -> (a -> m b) -> m b
Sequencing a -> b -> b f a -> b -> f b f a -> f b -> f b f a -> f b -> f b
Composition (a -> b) -> (b -> c) -> a -> c (a -> b) -> (b -> c) -> f a -> f c g *=> f (a -> f b) -> (b -> f c) -> a -> f c
СсылкаОтветить