The use case is the same, wanting to abstract over numbers. I don't have anything more concrete in mind, just that these are essential operations for Nat (well, ^ might be gratuitous -- I don't expect to see much use of that). Multiplication and addition are already needed for constructing Nat instances in a simple way (without relying on macros): Nat._4._2. If you couldn't do anything useful with Nat you might as well not bother and just use macro hacks on HList (although these would have to be white-box macros)