…and you should eschew the name uuid-bits
as your 128-bit values won’t be (valid) UUIDs, as noted by @rhendric.
Stretching the Glasgow Haskell Compiler: Nourishing GHC with Domain-Driven Design (2023)
ghci> :m Data.Word ghci> :i Word128 type Word128 :: * data Word128 = GHC.Word.W128# GHC.Prim.Word128# -- Defined in ‘GHC.Word’ instance Bounded Word128 -- Defined in ‘GHC.Word’ instance Enum Word128 -- Defined in ‘GHC.Word’ instance Integral Word128 -- Defined in ‘GHC.Word’ instance Num Word128 -- Defined in ‘GHC.Word’ instance Ord Word128 -- Defined in ‘GHC.Word’ instance Read Word128 -- Defined in ‘GHC.Read’ instance Real Word128 -- Defined in ‘GHC.Word’ instance Show Word128 -- Defined in ‘GHC.Word’ instance Eq Word128 -- Defined in ‘GHC.Word’ ghci>