Then it's also simple to define isdigit, but the standard defines it
and doesn't leave the definition to us.
Why isn't that the case with isodigit?
I suspect there are two reasons. One a lack of interest, especially
given how trivial it would be implement yourself (really? you
actually have some a purpose for isodigit?). Second, adding another
ctype class would probably require a bigger lookup table (assuming the
typical design) on many small C implementations, for darn little good
reason. If you have eight bit chars, and can live with some
restrictions* on what different locales can do to the ctype classes,
you can implement everything (except toupper/lower) with a single 256
(usually 257) byte table. Add another class, and you either need 256
shorts, or a second table.
*Specifically, you have to disallow locales that have characters in
isalpha that are not in islower or isupper, or with characters in
isspace that are not in isprint or iscntrl. Which are actually a
common conditions for compilers targeting small embedded systems,
which often restrict themselves to just the C locale.