DS
foo <- read_line
на
foo = "a"
это будет неравноценно
Size: a a a
DS
P
p
λ
p
λ
P
P
λ
bar.and_then(|foo| { ... })P
p
bar.and_then(|foo| { ... })DS
class IO[A](...):
def bind(self, f: A => IO[B]) -> IO[B]:
...
# вот пример сахара:
a <- read_line_io()
return a + "\n"
#вот как оно вне сахара будет выглядить:
read_line_io().bind(lambda a: return a + "\n")
λ
DS
P
p
class IO[A](...):
def bind(self, f: A => IO[B]) -> IO[B]:
...
# вот пример сахара:
a <- read_line_io()
return a + "\n"
#вот как оно вне сахара будет выглядить:
read_line_io().bind(lambda a: return a + "\n")
DS
P
P
DS