packages feed

ptera-core-0.1.0.0: src/Language/Parser/Ptera/Data/Alignable.hs

module Language.Parser.Ptera.Data.Alignable (
    T,
    Alignable,
    initialAlign,
    nextAlign,
    numIncrements,
    Inst (..),
) where

import           Language.Parser.Ptera.Prelude


type T = Alignable

class Coercible Int i => Alignable i

initialAlign :: Alignable i => i
initialAlign = coerce (0 :: Int)

nextAlign :: Alignable i => i -> i
nextAlign = coerce (succ :: Int -> Int)

numIncrements :: Alignable i => i -> Int
numIncrements = coerce

newtype Inst = Inst Int

instance Alignable Inst