|
|
|
|
|
by lmm
4151 days ago
|
|
It's in a do block, so you can see that these are not simple function calls; they're being composed via some monad. In cases where you're actually chaining values together it's more obvious which things are which: do
value1 <- function1 --effectful function
let value2 = function2(value1) --pure function
value3 <- function3(value1, value2) --effectful function
...
But the notation is a bit more magic for this "no return" case; I prefer the Scala approach where even if you don't care about the return values you'd have to write this as for {
_ ← cd "/tmp" // effectful function
_ ← mkdir "test" //effectful function
_ = someCalculation() //pure function
...
|
|
But the "let" vs no "let" is a pretty strong hint anyway :)