module Biobase.Types.Score where
import qualified Data.Vector.Unboxed as VU
import qualified Data.Vector.Generic as VG
import qualified Data.Vector.Generic.Mutable as VGM
import Data.Primitive.Types
import Biobase.Types.Ring
newtype Score = Score {unScore :: Int}
deriving (Show, Read, Eq, Ord)
instance Ring Score where
(Score a) .+. (Score b) = Score $ a `min` b
(Score a) .*. (Score b) = Score $ a + b
neg (Score a) = Score $ negate a
one = Score 0
zero = Score 10000000
isZero (Score a) = a >= 1000000
deriving instance VGM.MVector VU.MVector Score
deriving instance VG.Vector VU.Vector Score
deriving instance VU.Unbox Score
deriving instance Prim Score