packages feed

morley-prelude-0.6.0: src/Morley/Prelude/Word.hs

-- SPDX-FileCopyrightText: 2022 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

{-# LANGUAGE NoImplicitPrelude, CPP #-}

module Morley.Prelude.Word
  ( Word63
  , Word62
  )
  where

import Data.Bits (Bits, FiniteBits)
import Universum (Bounded, Enum, Eq, Integral, Num, Ord, Read, Real, Show)

import Data.IntCast (IntBaseType, IntBaseTypeK(..))
import Data.Word.Odd qualified as OddWord

newtype Word62 = Word62 OddWord.Word62
  deriving newtype (Eq, Ord, Show, Read, Num, Real, Bounded, Enum, Integral, Bits, FiniteBits)
newtype Word63 = Word63 OddWord.Word63
  deriving newtype (Eq, Ord, Show, Read, Num, Real, Bounded, Enum, Integral, Bits, FiniteBits)

type instance IntBaseType Word63 = 'FixedWordTag 63
type instance IntBaseType Word62 = 'FixedWordTag 62