3 ms·
It throws type error at run time, not compile time. To be a statically type language you would need to throw the error at compile time. How do you raise (or n
by joesb 15y ago
It throws type error at run time, not compile time.
To be a statically type language you would need to throw the error at compile time.
How do you raise (or not raise) error of this code at compile time and still make it feel like dynamic type language?
x = (rand() > 0.5) ? 42 : "42"
y = x + 1;
- jrockway 15y agoThe type of x is Int|String The type of (+ 1) is Int -> Int The type of y is Int Because x is of type Int|String and it's passed to a function that can only operate on Int, the program fails to compile.
- kingkilr 15y agoI highly reccomend you read, "Localized type inference of atomic types in python" by Brett Cannon (2005), it shines a light on just how much this doesn't work.
- ned_batchelder 15y agoSo when you said, "looks just like Python," you literally meant, "lexically looks like Python," because you aren't building a language that works just like Python.