The change [var V] by ((1) / (2)) does NOT work if bignums were turned on.
How to replicate
Try recreating the above script and run it. You'll get the error Hmm... expecting a number / list but getting a undefined. This is because this block uses the assertType function that validates the type. The block asserts for type number and list. Since fractions created from bignums are neither numbers nor list, assertion fails and the block returns an error.
Yeah, bignum arithmetic works fine by itself, but the rest of Snap! doesn't know about the numeric tower, sadly. If we give Jens a hard time about it he'll just delete the library, so let's not.
That's what I mean by "giving Jens a hard time about it"!
Yes, I personally think that in a perfect world we would just automatically support the full numeric tower (bignums, exact rationals, floats, and complex numbers). But that would mean that every block that takes numbers as inputs would have to test for all those kinds of numbers, and the tests alone would slow down Snap! programs. (Indeed, turning on bignum support does slow down Snap!. That's why loading the library doesn't automatically turn on bignums.) I'd personally be willing to accept a small constant-factor slowdown for the sake of mathematical correctness, but Jens is eager for Snap! to run as fast as possible, and that's a defensible position. People who are doing compute-heavy things such as ray tracing may not care about, e.g., exact rational coordinates, especially since coordinates have to be rounded to a small range of integers before we actually draw things on the screen.
Shift-click the Snap! logo and click "enter development mode". Several hidden blocks, including "type of" will be revealed! But I liked the way you did it.