!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None   NoneA definition for  6 suitable for newtypes. Given a newtype declared as: newtype T a = T { unT :: a } The   definition can be given as: 6instance Show1 T where liftShowsPrec = showsNewtype T "unT" A definition for  6 suitable for newtypes. Given a newtype declared as: newtype T a = T { unT :: a } The   definition can be given as: 6instance Read1 T where liftReadsPrec = readsNewtype T "unT" 9 9 Haskell semiringsMITmail@doisinkidney.com experimentalNone/2345<=DIORT The " .https://ncatlab.org/nlab/show/max-plus+algebraArctic0" or max-plus semiring. It is a semiring where:  =   = -"  =   = Note that we can't use   from % because annihilation needs to hold: -"  x = x  -" = -"Taking -" to be # would break the above law. Using ! to represent it follows the law.The " /https://ncatlab.org/nlab/show/tropical+semiringTropical0" or min-plus semiring. It is a semiring where:  =   = "  =   = Note that we can't use   from % because annihilation needs to hold: "  x = x  " = "Taking " to be " would break the above law. Using " to represent it follows the law.KA suitable definition of a square matrix for certain types which are both  and %. For instance, given a type like so::{ (data Quad a = Quad a a a a deriving Showinstance Functor Quad where8 fmap f (Quad w x y z) = Quad (f w) (f x) (f y) (f z)instance Applicative Quad where pure x = Quad x x x x+ Quad fw fx fy fz <*> Quad xw xx xy xz =, Quad (fw xw) (fx xx) (fy xy) (fz xz)instance Foldable Quad where6 foldr f b (Quad w x y z) = f w (f x (f y (f z b)))instance Traversable Quad whereD traverse f (Quad w x y z) = Quad <$> f w <*> f x <*> f y <*> f z:})The newtype performs as you would expect:$getMatrix one :: Quad (Quad Integer)@Quad (Quad 1 0 0 0) (Quad 0 1 0 0) (Quad 0 0 1 0) (Quad 0 0 0 1)1s are another type which works with this newtype::{7let xs = (Matrix . ZipList . map ZipList) [[1,2],[3,4]]7 ys = (Matrix . ZipList . map ZipList) [[5,6],[7,8]]8in (map getZipList . getZipList . getMatrix) (xs <.> ys):}[[19,22],[43,50]]  Monoid under . Analogous to , but uses the  constraint, rather than .  Monoid under . Analogous to , but uses the  constraint, rather than .A class for semirings with a concept of "negative infinity". It's important that this isn't regarded as the same as "bounded": x   should probably equal .A negative infinite value%Test if a value is negative infinity.xA class for semirings with a concept of "infinity". It's important that this isn't regarded as the same as "bounded": x   should probably equal .A positive infinite value%Test if a value is positive infinity.iUseful for operations where zeroes may need to be discarded: for instance in sparse matrix calculations. if x is .A  5https://en.wikipedia.org/wiki/Semiring#Star_semirings Star semiring adds one operation,  to a  , such that it follows the law:  x =   x   x =    x  xNFor the semiring of types, this is equivalent to a list. When looking at the  and ; classes as (near-) semirings, this is equivalent to the  operation.Another operation,  , can be defined in relation to :  x = x   xBThis should be recognizable as a non-empty list on types, or the  operation in .A  &https://en.wikipedia.org/wiki/SemiringSemiring% is like the the combination of two s. The first is called ; it has the identity element /, and it is commutative. The second is called ; it has identity element , and it must distribute over .LawsNormal  laws (a  b)  c = a  (b  c)   a = a   = a (a  b)  c = a  (b  c)   a = a   = aCommutativity of  a  b = b  aDistribution of  over  a  (b  c) = (a  b)  (a  c) (a  b)  c = (a  c)  (b  c) Annihilation   a = a   = %An ordered semiring follows the laws: x  y => x  z  y  z x  y => x  z  y  z   z  x  y => x  z  y  z  z  x  z  yThe identity of .The identity of .8An associative binary operation, which distributes over .-An associative, commutative binary operation.6Takes the sum of the elements of a list. Analogous to  on numbers, or  on s. add [1..5]15add [False, False]Falseadd [False, True]Trueadd [True, undefined]True ;Takes the product of the elements of a list. Analogous to  on numbers, or  on s. mul [1..5]120mul [True, True]Truemul [True, False]Falsemul [False, undefined]False!!The product of the contents of a ."The sum of the contents of a .#Transpose the matrix.$Multiply two matrices.%7Convert the matrix to a nested list, in row-major form.&:Convert the matrix to a nested list, in column-major form.This is not a true semiring. In particular, it requires the underlying monoid to be commutative, and even then, it is only a near semiring. It is, however, extremely useful. For instance, this type:  forall a.  ( a)hIs a valid encoding of church numerals, with addition and multiplication being their semiring variants.The (->)& instance is analogous to the one for .(getMin . foldMap Min) [1..10]1.0(getMax . foldMap Max) [1..10]10.0A polynomial in x: can be defined as a list of its coefficients, where the i!th element is the coefficient of x^i7. This is the semiring for such a list. Adapted from  Nhttps://pdfs.semanticscholar.org/702d/348c32133997e992db362a19697d5607ab32.pdfhere.ZEffort is made to allow some of these functions to fuse. The reference implementation is:  = []  = [] []  ys = ys xs  [] = xs (x:xs)  (y:ys) = x  y : (xs  ys) _  [] = [] xs  ys =  f [] xs where f x zs =  (x ) ys  ( : zs)   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~M[i'  !"#$%&' !"  #$%&    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~M[i76NoneIwThe free semiringzRun a w.{Run a w-, interpreting it in the underlying semiring.| Create a w with one item. wxyz{|}~wxyz{|wxy|{zwxyz{|}~None2345T[hAdds positive and negative infinity to a type. Useful for expressing detectable infinity in types like , etc.[Adds positive infinity to a type. Useful for expressing detectable infinity in types like , etc.[Adds negative infinity to a type. Useful for expressing detectable infinity in types like , etc.Not distributive.,Only lawful when used with positive numbers.Doesn't follow  or .:3"Some interesting numeric semiringsMITmail@doisinkidney.com experimentalNone %&2345<=DIR(Adds a star operation to integral types. () = () () = ()  =   =   0 = 1  _ = *Adds a star operation to fractional types. () = () () = ()  =   =  $ x = if x < 1 then 1 / (1 - x) else  ;https://en.wikipedia.org/wiki/Semiring#cite_ref-droste_14-0 Wikipedia& has some information on this. Also  Shttp://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.304.6152&rep=rep1&type=pdfthis3 paper. Apparently used for probabilistic parsing. () =  () = ()  =   =  ;https://en.wikipedia.org/wiki/Semiring#cite_ref-droste_14-0 Wikipedia& has some information on this. Also  Shttp://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.304.6152&rep=rep1&type=pdfthis paper. () =  x  y =  0 (x  y  1)  =   = Positive numbers only. () =  () =   =   = $Useful for some constraint problems. () =  () =   =   = Only expects positive numbersZ     B     (Some functions for generating tests for s.MITmail@doisinkidney.com experimentalNoneT0Typealias for ternary laws. Can be used like so: -smallCheck 6 (ternaryLaws :: TernaryLaws Int)/Typealias for binary laws. Can be used like so: +smallCheck 8 (binaryLaws :: BinaryLaws Int).Typealias for unary laws. Can be used like so: *smallCheck 10 (unaryLaws :: UnaryLaws Int)Plus is associative. (x  y)  z = x  (y  z)Multiplication is associative. (x  y)  z = x  (y  z)Plus is commutative. x  y = y  x Multiplication distributes left. x  (y  z) = x  y  x  z!Multiplication distributes right. (x  y)  z = x  z  y  zAdditive identity. x   =   x = xMultiplicative identity. x   =   x = xRight annihilation of  by .   x = Left annihilation of  by . x   = $A test for all three unary laws for s (, , , and ).#A test for the unary laws for near-s (, , and ).,A test for all of the ternary laws for near-s (, , ).&A test for all of the binary laws for s (just ).'A test for all of the ternary laws for s (, , , ).The star law for s.  x =   x   x =    x  xThe plus law for s.  x = x   x The laws for s (, ).Addition law for ordered s. x  y => x  z  y  z  z  x  z  yMultiplication law for ordered s. x  y &&   z => x  z  y  z  z  x  z  yLaws for ordered s (, ).Law for result of  operation. x   =   x =  xZero is zero law.   =  The laws for  s (, ). !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     +semiring-num-1.6.0.0-66q6gJWwkcBA4Qx1ufopM1 Data.SemiringData.Semiring.FreeData.Semiring.InfiniteData.Semiring.Numeric Test.SemiringData.Semiring.THData.Semiring.NewtypeData.Functor.Classes liftShowsPrecShow1 liftReadsPrecRead1Data.SemigroupMaxData SemigroupMin Data.MonoidProductSumMonoid annihilateL mulDistribRgetMaxgetMinMatrix getMatrixMulgetMulAddgetAddHasNegativeInfinitynegativeInfinityisNegativeInfinityHasPositiveInfinitypositiveInfinityisPositiveInfinityDetectableZeroisZero StarSemiringstarplusSemiringzeroone<.><+>addmul mulFoldable addFoldable transpose mulMatrixrowscols$fDetectableZeroFixed$fDetectableZeroComplex$fDetectableZeroRatio$fDetectableZeroNatural$fDetectableZeroCDev$fDetectableZeroCIno$fDetectableZeroCMode$fDetectableZeroCOff$fDetectableZeroCPid$fDetectableZeroCSsize$fDetectableZeroCGid$fDetectableZeroCNlink$fDetectableZeroCUid$fDetectableZeroCCc$fDetectableZeroCSpeed$fDetectableZeroCTcflag$fDetectableZeroCRLim$fDetectableZeroFd$fDetectableZeroWordPtr$fDetectableZeroIntPtr$fDetectableZeroCChar$fDetectableZeroCSChar$fDetectableZeroCUChar$fDetectableZeroCShort$fDetectableZeroCUShort$fDetectableZeroCInt$fDetectableZeroCUInt$fDetectableZeroCLong$fDetectableZeroCULong$fDetectableZeroCLLong$fDetectableZeroCULLong$fDetectableZeroCFloat$fDetectableZeroCDouble$fDetectableZeroCPtrdiff$fDetectableZeroCSize$fDetectableZeroCWchar$fDetectableZeroCSigAtomic$fDetectableZeroCClock$fDetectableZeroCTime$fDetectableZeroCUSeconds$fDetectableZeroCSUSeconds$fDetectableZeroCIntPtr$fDetectableZeroCUIntPtr$fDetectableZeroCIntMax$fDetectableZeroCUIntMax$fDetectableZeroNominalDiffTime$fDetectableZeroDiffTime$fDetectableZeroScientific$fDetectableZeroDouble$fDetectableZeroFloat$fDetectableZeroWord64$fDetectableZeroWord32$fDetectableZeroWord16$fDetectableZeroWord8$fDetectableZeroWord$fDetectableZeroInteger$fDetectableZeroInt64$fDetectableZeroInt32$fDetectableZeroInt16$fDetectableZeroInt8$fDetectableZeroInt$fSemiringIdentity$fSemiringFixed$fSemiringComplex $fSemiringSum$fSemiringProduct$fSemiringRatio$fSemiringNatural$fSemiringCDev$fSemiringCIno$fSemiringCMode$fSemiringCOff$fSemiringCPid$fSemiringCSsize$fSemiringCGid$fSemiringCNlink$fSemiringCUid $fSemiringCCc$fSemiringCSpeed$fSemiringCTcflag$fSemiringCRLim $fSemiringFd$fSemiringWordPtr$fSemiringIntPtr$fSemiringCChar$fSemiringCSChar$fSemiringCUChar$fSemiringCShort$fSemiringCUShort$fSemiringCInt$fSemiringCUInt$fSemiringCLong$fSemiringCULong$fSemiringCLLong$fSemiringCULLong$fSemiringCFloat$fSemiringCDouble$fSemiringCPtrdiff$fSemiringCSize$fSemiringCWchar$fSemiringCSigAtomic$fSemiringCClock$fSemiringCTime$fSemiringCUSeconds$fSemiringCSUSeconds$fSemiringCIntPtr$fSemiringCUIntPtr$fSemiringCIntMax$fSemiringCUIntMax$fSemiringNominalDiffTime$fSemiringDiffTime$fSemiringScientific$fSemiringDouble$fSemiringFloat$fSemiringWord64$fSemiringWord32$fSemiringWord16$fSemiringWord8$fSemiringWord$fSemiringInteger$fSemiringInt64$fSemiringInt32$fSemiringInt16$fSemiringInt8 $fSemiringInt$fDetectableZeroAll$fDetectableZeroAny$fStarSemiringAll $fSemiringAll$fStarSemiringAny $fSemiringAny$fDetectableZeroEndo$fStarSemiringEndo$fSemiringEndo$fStarSemiring(->)$fSemiring(->)$fVectorVectorMax$fMVectorMVectorMax$fVectorVectorMin$fMVectorMVectorMin$fDetectableZeroMax$fDetectableZeroMin$fStarSemiringMin$fStarSemiringMax $fSemiringMin $fSemiringMax $fMonoidMin $fMonoidMax$fSemigroupMin$fSemigroupMax $fRead1Min $fShow1Min $fOrd1Min$fEq1Min $fRead1Max $fShow1Max $fOrd1Max$fEq1Max $fOrdMatrix $fEqMatrix $fReadMatrix $fShowMatrix $fOrd1Matrix $fEq1Matrix $fRead1Matrix $fShow1Matrix$fDetectableZeroMatrix$fSemiringMatrix$fApplicativeMatrix $fMonoidMul $fMonoidAdd$fSemigroupMul$fSemigroupAdd $fRead1Mul $fShow1Mul $fOrd1Mul$fEq1Mul $fRead1Add $fShow1Add $fOrd1Add$fEq1Add$fDetectableZeroSignedLog$fSemiringSignedLog$fDetectableZeroLog $fSemiringLog$fDetectableZeroHashSet$fDetectableZeroSet$fSemiringHashMap $fSemiringMap$fSemiringHashSet $fSemiringSet$fDetectableZeroVector$fSemiringVector$fDetectableZeroVector0$fSemiringVector0$fDetectableZeroVector1$fSemiringVector1$fDetectableZero[]$fStarSemiring[] $fSemiring[]$fStarSemiring()$fDetectableZero() $fSemiring()$fDetectableZeroBool$fStarSemiringBool$fSemiringBool$fHasNegativeInfinityCFloat$fHasPositiveInfinityCFloat$fHasNegativeInfinityCDouble$fHasPositiveInfinityCDouble$fHasNegativeInfinityFloat$fHasPositiveInfinityFloat$fHasNegativeInfinityDouble$fHasPositiveInfinityDouble$fEqMul$fOrdMul $fReadMul $fShowMul $fBoundedMul $fGenericMul $fGeneric1Mul$fNumMul $fEnumMul $fStorableMul$fFractionalMul $fRealMul $fRealFracMul $fFunctorMul $fFoldableMul$fTraversableMul $fSemiringMul$fDetectableZeroMul$fStarSemiringMul$fEqAdd$fOrdAdd $fReadAdd $fShowAdd $fBoundedAdd $fGenericAdd $fGeneric1Add$fNumAdd $fEnumAdd $fStorableAdd$fFractionalAdd $fRealAdd $fRealFracAdd $fFunctorAdd $fFoldableAdd$fTraversableAdd $fSemiringAdd$fDetectableZeroAdd$fStarSemiringAdd$fGenericMatrix$fGeneric1Matrix$fFunctorMatrix$fFoldableMatrix$fTraversableMatrix$fEqMin$fOrdMin $fReadMin $fShowMin $fBoundedMin $fGenericMin $fGeneric1Min$fNumMin $fEnumMin $fStorableMin$fFractionalMin $fRealMin $fRealFracMin $fFunctorMin $fFoldableMin$fTraversableMin $fNFDataMin$fEqMax$fOrdMax $fReadMax $fShowMax $fBoundedMax $fGenericMax $fGeneric1Max$fNumMax $fEnumMax $fStorableMax$fFractionalMax $fRealMax $fRealFracMax $fFunctorMax $fFoldableMax$fTraversableMax $fNFDataMax$fDetectableZeroIdentity$fDetectableZeroSum$fDetectableZeroProduct$fSemiring(,,,,,,,,,,,,,,)$fSemiring(,,,,,,,,,,,,,)$fSemiring(,,,,,,,,,,,,)$fSemiring(,,,,,,,,,,,)$fSemiring(,,,,,,,,,,)$fSemiring(,,,,,,,,,)$fSemiring(,,,,,,,,)$fSemiring(,,,,,,,)$fSemiring(,,,,,,)$fSemiring(,,,,,)$fSemiring(,,,,)$fSemiring(,,,)$fSemiring(,,) $fSemiring(,)$fStarSemiring(,,,,,,,,,,,,,,)$fStarSemiring(,,,,,,,,,,,,,)$fStarSemiring(,,,,,,,,,,,,)$fStarSemiring(,,,,,,,,,,,)$fStarSemiring(,,,,,,,,,,)$fStarSemiring(,,,,,,,,,)$fStarSemiring(,,,,,,,,)$fStarSemiring(,,,,,,,)$fStarSemiring(,,,,,,)$fStarSemiring(,,,,,)$fStarSemiring(,,,,)$fStarSemiring(,,,)$fStarSemiring(,,)$fStarSemiring(,) $fDetectableZero(,,,,,,,,,,,,,,)$fDetectableZero(,,,,,,,,,,,,,)$fDetectableZero(,,,,,,,,,,,,)$fDetectableZero(,,,,,,,,,,,)$fDetectableZero(,,,,,,,,,,)$fDetectableZero(,,,,,,,,,)$fDetectableZero(,,,,,,,,)$fDetectableZero(,,,,,,,)$fDetectableZero(,,,,,,)$fDetectableZero(,,,,,)$fDetectableZero(,,,,)$fDetectableZero(,,,)$fDetectableZero(,,)$fDetectableZero(,)FreegetFreerunFree lowerFreeliftFree$fFoldableFree $fNumFree $fShowFree $fReadFree$fEqFree $fOrdFree$fSemiringFreeInfiniteNegativeFinitePositivePositiveInfinite PosFinitePositiveInfinityNegativeInfiniteNegativeInfinity NegFinite$fRead1Infinite$fRead1NegativeInfinite$fRead1PositiveInfinite$fShow1Infinite$fShow1NegativeInfinite$fShow1PositiveInfinite$fOrd1Infinite$fOrd1PositiveInfinite$fOrd1NegativeInfinite $fEq1Infinite$fEq1PositiveInfinite$fEq1NegativeInfinite$fNFDataInfinite$fNFDataPositiveInfinite$fNFDataNegativeInfinite$fStorableInfinite$fStorablePositiveInfinite$fStorableNegativeInfinite $fNumInfinite$fNumPositiveInfinite$fNumNegativeInfinite$fMonoidInfinite$fMonoidPositiveInfinite$fMonoidNegativeInfinite$fEnumInfinite$fEnumPositiveInfinite$fEnumNegativeInfinite$fHasPositiveInfinityInfinite$fHasNegativeInfinityInfinite%$fHasPositiveInfinityPositiveInfinite%$fHasNegativeInfinityNegativeInfinite$fBoundedInfinite$fBoundedPositiveInfinite$fBoundedNegativeInfinite$fApplicativeInfinite$fDetectableZeroInfinite $fDetectableZeroPositiveInfinite $fDetectableZeroNegativeInfinite$fStarSemiringPositiveInfinite$fSemiringInfinite$fSemiringPositiveInfinite$fSemiringNegativeInfinite$fApplicativePositiveInfinite$fApplicativeNegativeInfinite$fEqNegativeInfinite$fOrdNegativeInfinite$fReadNegativeInfinite$fShowNegativeInfinite$fGenericNegativeInfinite$fGeneric1NegativeInfinite$fFunctorNegativeInfinite$fFoldableNegativeInfinite$fTraversableNegativeInfinite$fEqPositiveInfinite$fOrdPositiveInfinite$fReadPositiveInfinite$fShowPositiveInfinite$fGenericPositiveInfinite$fGeneric1PositiveInfinite$fFunctorPositiveInfinite$fFoldablePositiveInfinite$fTraversablePositiveInfinite $fEqInfinite $fOrdInfinite$fReadInfinite$fShowInfinite$fGenericInfinite$fGeneric1Infinite$fFunctorInfinite$fFoldableInfinite$fTraversableInfinitePosInt getPosIntPosFrac getPosFracViterbi getViterbi ŁukasiewiczgetŁukasiewiczDivision getDivision Bottleneck getBottleneck$fVectorVectorPosInt$fMVectorMVectorPosInt$fVectorVectorPosFrac$fMVectorMVectorPosFrac$fVectorVectorViterbi$fMVectorMVectorViterbi$fVectorVectorŁukasiewicz$fMVectorMVectorŁukasiewicz$fVectorVectorDivision$fMVectorMVectorDivision$fVectorVectorBottleneck$fMVectorMVectorBottleneck $fRead1PosInt $fShow1PosInt $fOrd1PosInt $fEq1PosInt$fStarSemiringPosInt$fSemiringPosInt$fBoundedPosInt$fRead1PosFrac$fShow1PosFrac $fOrd1PosFrac $fEq1PosFrac$fStarSemiringPosFrac$fSemiringPosFrac$fBoundedPosFrac$fRead1Viterbi$fShow1Viterbi $fOrd1Viterbi $fEq1Viterbi$fSemiringViterbi$fRead1Łukasiewicz$fShow1Łukasiewicz$fOrd1Łukasiewicz$fEq1Łukasiewicz$fDetectableZeroŁukasiewicz$fSemiringŁukasiewicz$fRead1Division$fShow1Division$fOrd1Division $fEq1Division$fSemiringDivision$fRead1Bottleneck$fShow1Bottleneck$fOrd1Bottleneck$fEq1Bottleneck$fDetectableZeroBottleneck$fSemiringBottleneck$fEqBottleneck$fOrdBottleneck$fReadBottleneck$fShowBottleneck$fBoundedBottleneck$fGenericBottleneck$fGeneric1Bottleneck$fNumBottleneck$fEnumBottleneck$fStorableBottleneck$fFractionalBottleneck$fRealBottleneck$fRealFracBottleneck$fFunctorBottleneck$fFoldableBottleneck$fTraversableBottleneck$fNFDataBottleneck $fEqDivision $fOrdDivision$fReadDivision$fShowDivision$fBoundedDivision$fGenericDivision$fGeneric1Division $fNumDivision$fEnumDivision$fStorableDivision$fFractionalDivision$fRealDivision$fRealFracDivision$fFunctorDivision$fFoldableDivision$fTraversableDivision$fDetectableZeroDivision$fNFDataDivision$fEqŁukasiewicz$fOrdŁukasiewicz$fReadŁukasiewicz$fShowŁukasiewicz$fBoundedŁukasiewicz$fGenericŁukasiewicz$fGeneric1Łukasiewicz$fNumŁukasiewicz$fEnumŁukasiewicz$fStorableŁukasiewicz$fFractionalŁukasiewicz$fRealŁukasiewicz$fRealFracŁukasiewicz$fFunctorŁukasiewicz$fFoldableŁukasiewicz$fTraversableŁukasiewicz$fNFDataŁukasiewicz $fEqViterbi $fOrdViterbi $fReadViterbi $fShowViterbi$fBoundedViterbi$fGenericViterbi$fGeneric1Viterbi $fNumViterbi $fEnumViterbi$fStorableViterbi$fFractionalViterbi $fRealViterbi$fRealFracViterbi$fFunctorViterbi$fFoldableViterbi$fTraversableViterbi$fDetectableZeroViterbi$fNFDataViterbi $fEqPosFrac $fOrdPosFrac $fReadPosFrac $fShowPosFrac$fGenericPosFrac$fGeneric1PosFrac $fNumPosFrac $fEnumPosFrac$fStorablePosFrac$fFractionalPosFrac $fRealPosFrac$fRealFracPosFrac$fFunctorPosFrac$fFoldablePosFrac$fTraversablePosFrac$fDetectableZeroPosFrac$fNFDataPosFrac $fEqPosInt $fOrdPosInt $fReadPosInt $fShowPosInt$fGenericPosInt$fGeneric1PosInt $fNumPosInt $fEnumPosInt$fStorablePosInt$fFractionalPosInt $fRealPosInt$fRealFracPosInt$fFunctorPosInt$fFoldablePosInt$fTraversablePosInt$fDetectableZeroPosInt$fNFDataPosInt TernaryLaws BinaryLaws UnaryLaws plusAssocmulAssocplusComm mulDistribLplusIdmulId annihilateR unaryLaws nearUnaryLawsnearTernaryLaws binaryLaws ternaryLawsstarLawplusLawstarLaws ordAddLaw ordMulLawordLawszeroLaw zeroIsZerozeroLaws typeNamesvarNamesrepNappNcmbNstarInsinline semiringInszeroInsandAll showsNewtype readsNewtype BinaryWrapped WrapBinary CoerceBinaryBinary#..#ghc-prim GHC.ClassesmaxbaseGHC.EnumminBoundminmaxBoundGHC.Base ApplicativeData.Traversable TraversableControl.ApplicativeZipListGHC.NumNum GHC.TypesTrue Alternativemanysome<=&& Data.FoldablesumorBoolproductandFoldableEndofoldrmap ListBuilderFBRFBLMV_MaxV_MaxMV_MinV_MinisZeroEqdefaultPositiveInfinitydefaultIsPositiveInfinitydefaultIsNegativeInfinitydefaultNegativeInfinitylistAdd listAddFBL listAddFBRD:R:MVectorsMax0D:R:VectorMax0D:R:MVectorsMin0D:R:VectorMin0rep integer-gmpGHC.Integer.TypeInteger maxBoundOfstrip stripFPtrstripPtr+-GHC.Realgcdlcm MV_PosIntV_PosInt MV_PosFrac V_PosFrac MV_Viterbi V_ViterbiMV_ŁukasiewiczV_Łukasiewicz MV_Division V_Division MV_Bottleneck V_BottleneckD:R:MVectorsPosInt0D:R:VectorPosInt0D:R:MVectorsPosFrac0D:R:VectorPosFrac0D:R:MVectorsViterbi0D:R:VectorViterbi0D:R:MVectorsŁukasiewicz0D:R:VectorŁukasiewicz0D:R:MVectorsDivision0D:R:VectorDivision0D:R:MVectorsBottleneck0D:R:VectorBottleneck0==