>>107519569
>post code Cniles
>behold, my "generic" checked arithmetic
At least you're checking
#define OPERATOR(op, name) \
pair *name(pair *args) { \
pair *result = number(fst(args)->number); \
for (args = snd(args); args; args = snd(args)) \
result->number = result->number op fst(args)->number; \
return result; \
}
OPERATOR(+, add)
OPERATOR(-, sub)
OPERATOR(*, mul)
OPERATOR(/, div)
#undef OPERATOR