--
-- features of a basic value
-- at least Int's and Bool's
-- must be representable in the machine

class BasicValue v where
  asInt  :: Prism' v Int

  asBool :: Prism' v Bool
  asBool = asInt . intBool

-- --------------------