S
Size: a a a
S
GP
λ
λ
λ
GP
EB
Take functional programming's "algebraic reasoning" with a grain of salt: the monad laws, for example, only ensure you can reason about your imperative DSL like a C programmer reasons about statements.
EB
S
S
EB
EB
S
S
AD
AD
Take functional programming's "algebraic reasoning" with a grain of salt: the monad laws, for example, only ensure you can reason about your imperative DSL like a C programmer reasons about statements.
a
for {
_ <- putStrLn(...)
_ <- ref.modify(f)
...
} yield ()
{
println(...)
ref = f(ref)
}
EB
for {
_ <- putStrLn(...)
_ <- ref.modify(f)
...
} yield ()
{
println(...)
ref = f(ref)
}