Every UOp is a tuple: (op, srcs, arg?)
shape, dtype, device, addrspace are recursively computed properties.
This is what happens if you just keep refactoring. LLVM IR is good, but parts look like they locked it in before it was done. We value beauty over speed and features.