4 ms·
Ah, I see, I figured that there might be some case like that. I would have expected that to be a compile-time error because `y` is an unrecognized identifier by
by OskarS 10y ago
Ah, I see, I figured that there might be some case like that. I would have expected that to be a compile-time error because `y` is an unrecognized identifier by the time `x` is defined, but I guess it makes sense with lazy evaluation to not make that kind of ordering matter.
- hood_syntax 10y agoYeah, all definitions are module level unless they are scoped in let or where blocks (someone correct me if I'm mistaken)
- tener 10y agoLazy evaluation is not important item here. It is merely the semantics is defined in a way that the order of declarations does not matter. Other languages have this property too - say, C# (not entirely true, but pretty close - at least if you think about top level methods etc.). Also an example where the order of declarations does not matter at all, because there is just one declaration: x :: [Integer] x = 0 : 1 : x