<p dir="ltr">Or, alternatively, some common class that lets me express that a type is boring (i.e., inhabited by precisely one fully-defined value)? lens has Settable, whose law ensures the type involved has a boring representation (in the sense of representable functor), but is there a more fundamental way?</p>
<p dir="ltr">class Boring x where<br>
  inhabitant :: x<br>
instance Boring () where<br>
  inhabitant = ()<br>
instance Boring (Proxy a) where<br>
  inhabitant = Proxy<br>
instance Boring y => Boring (x -> y) where<br>
  inhabitant = const inhabitant<br>
instance (Boring x, Boring y) => Boring (x, y) where<br>
  inhabitant = (inhabitant, inhabitant)<br>
instance Boring x => Boring (Const x y) where<br>
  inhabitant = Const inhabitant<br>
instance Boring x => Boring (Identity x) where<br>
  inhabitant = Identity inhabitant<br>
...</p>