semiring-0.3: Data/Semiring/Viterbi.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Data.Semiring.Viterbi where
import Data.Semiring
import Data.Semiring.ViterbiNBest
data One = One
instance N One where
mkN = One
n _ = 1
type Viterbi semi = ViterbiNBest One semi
mkViterbi v = ViterbiNBest [v]
fromViterbi :: (Semiring semi) => Viterbi semi -> semi
fromViterbi (ViterbiNBest []) = mempty
fromViterbi (ViterbiNBest [v]) = v