# Why is there no \mudimendef primitive?

The TeXbook defines in chapter 24 (page 270 in my edition) the notion of <dimen>, <skip>, <mudimen> and <muskip>, the first two being used in horizontal and vertical mode, while the other ones are used in math mode.

However this parallel between math mode and other modes is broken by registers: only \dimendef, \skipdef and \muskipdef exist, and not \mudimendef. Similarly, \dimen 0, \skip 0 and \muskip 0 exist, but not \mudimen 0.

The only primitive that manipulates mudimens seems to be \mkern. Why are <mudimens> so special?

EDIT: extra question. I'm asking this because I try to be able to grab the argument of any primitive. To grab a <dimen>, for instance, one can use \newdimen\MyDimen and \afterassignment\DoSomethingWithMyDimen \MyDimen=. Given that TeX does not have <mudimen> parameters, I cannot use the same trick for that. I cannot use a muskip either, because it may mistakenly grab a stretch or shrink part which \mkern would stop at. It may be that I can use a \count register in some cases, but not all: how could I distinguish between cases like \mkern 1mu and \mkern \MyMuskip (with automatic coercion)?

-
There is only one unit mu for \mkern. Thus a \count would suffie. I guess this is why there isn't \mudimen register. –  Leo Liu Aug 13 '11 at 4:57
@Leo Liu: that's a great reason. How could I then grab a <mudimen> argument? Can you think of a way to grab exactly what \mkern would grab as its argument? See edit. –  Bruno Le Floch Aug 13 '11 at 11:59
I've no idea. But I guess you can change your desired syntax and use a count register without problems. –  Leo Liu Aug 13 '11 at 15:19
@Leo Liu: I'm reading arbitrary TeX code, and expanding fully all macros, then looking at whatever primitive is in front of me and doing what TeX would do with it. So I can't really change my syntax since it's that of TeX. I think I'll settle down for a muskip, despite the fact that it can in some cases grab too much. –  Bruno Le Floch Aug 13 '11 at 19:56