semiring-0.2: NLP/Semiring/Viterbi.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module NLP.Semiring.Viterbi where
import NLP.Semiring
import NLP.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