3 ms·
Does anyone know why the text claims that "2^-5" is an error, but the output shows it returning 0.03125?
by rcthompson 6y ago
Does anyone know why the text claims that "2^-5" is an error, but the output shows it returning 0.03125?
- kristofferc 6y agoIt 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.