4 ms·
It works the same way in Haskell, eg main = do let x = 2 let x = "foo" y <- pure 3 y <- pure "bar" putStrLn $ x ++ y which is really the
by kbp 2y ago
It works the same way in Haskell, eg
main = do
let x = 2
let x = "foo"
y <- pure 3
y <- pure "bar"
putStrLn $ x ++ y
which is really the same as
main =
let x = 2
in let x = "foo"
in pure 3 >>= \y ->
pure "bar" >>= \y ->
putStrLn $ x ++ y
So it works pretty naturally where each assignment is kind of like a new scope. If the type system is good, I don't think it really causes issues.
- mort96 2y agoHaskell has got to be by far the least readable language in the world, all of that is incomprehensible
- kbp 2y agoI'm not sure what you find incomprehensible about the first example. The syntax is pretty standard. The only exotic thing is `$`, which is basically just like putting brackets around the rest of the line. Here's the first example roughly translated to Python: def main(): x = 2 [x] = ["foo"] y = 3 [y] = ["bar"] print(x + y) Seems about the same level of comprehensibility to me. Is there anything in particular you find difficult to understand? The second example is expanded out and not how a person would normally write it, but if you're familiar with the basic concepts it's using, it shows why it works very clearly; think of it like assembler.
- kbp 2y agoEr, actually x = 2 x = "foo" [y] = [3] [y] = ["bar"] Sorry, I didn't re-read the code before translating.