3 ms·
It used to error, but exponentiation with negative literal integers was made to work. Perhaps the notebook hasn't been updated since then.
by kristofferc 6y ago
It used to error, but exponentiation with negative literal integers was made to work. Perhaps the notebook hasn't been updated since then.
- rcthompson 6y agoI would be interested to read how they made it work, given that it seems to violate the principle of type-stability. Did they just implement the slow runtime type check, or did they do something clever?
- dklend122 6y agoI think it's parsed specially, but I could be wrong. Definitely no runtime check
- improbable22 6y agoIt goes to `literal_pow`, one way to check is to overload this: Base.literal_pow(::typeof(^), x::Int, ::Val{n}) where {n} = (println("power $n"); float(x)^n) pow = -5 2^-5 # yes 2^pow # no, hence an error
- ChrisRackauckas 6y agoYes indeed: these are workshop notes from 2017 so it's a little old. In fact, it's surprising to see on Hacker News haha.