>48      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Haskell semiringsMITmail@doisinkidney.com experimentalNone/56I  Monoid under  . Analogous to , but uses the  constraint, rather than . Monoid under  . Analogous to , but uses the  constraint, rather than .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)HAnother useful law, annihilation, may be deduced from the axioms above:    a = a    = The identity of  .The identity of  . 8An associative binary operation, which distributes over  . -An associative, commutative binary operation.IThe ( semiring uses function composition for  , and pointwise  for  . The underlying  needs to be commutative.JThe (->)& instance is analogous to the one for .KThe  for  uses the  operation for  , and normal  for  .LThe  for  uses the  operation for  , and normal  for  .YThe   is  for  , and a Cartesian product for  .^  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[     V   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ 7 6"Some interesting numeric semiringsMITmail@doisinkidney.com experimentalNone5Ir ;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.u ;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  is ,   is . Positive numbers only.{  is ,   is Only expects positive numbers$rstuvwxyz{|}~ rstuvwxyz{|} {|}xyzuvwrstrstuvwxyz{|}~(Some QuickCheck properties for SemiringsMITmail@doisinkidney.com experimentalNoneTPlus is associative.Multiplication is associative.Plus is commutative. Multiplication distributes left.!Multiplication distributes right.Additive identityMultiplicative identityA property for all laws of .       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxxyzz{||}~~+semiring-num-0.1.0.2-8CEqcSE3SRUE2TglHldvhN Data.SemiringData.Semiring.Numeric Test.SemiringPrecursor.Algebra.MonoidMonoidData.SetunionMulgetMulAddgetAddSemiringzeroone<.><+>$fSemiring(,,,,)$fSemiring(,,,)$fSemiring(,,) $fSemiring(,)$fSemiringFixed$fSemiringComplex$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$fSemiringWord64$fSemiringWord32$fSemiringWord16$fSemiringWord8$fSemiringWord$fSemiringInteger$fSemiringInt64$fSemiringInt32$fSemiringInt16$fSemiringInt8 $fSemiringInt $fSemiringAll $fSemiringAny$fSemiringEndo$fSemiring(->) $fSemiringMin $fSemiringMax $fSemiringMul $fSemiringAdd $fMonoidMul $fMonoidAdd $fMonadMul $fMonadAdd$fApplicativeMul$fApplicativeAdd $fFoldableMul $fFoldableAdd $fFunctorMul $fFunctorAdd $fSemiringSet $fSemiring()$fSemiringBool$fEqAdd$fOrdAdd $fReadAdd $fShowAdd $fBoundedAdd $fGenericAdd $fGeneric1Add$fNumAdd$fArbitraryAdd$fEqMul$fOrdMul $fReadMul $fShowMul $fBoundedMul $fGenericMul $fGeneric1Mul$fNumMul$fArbitraryMul$fSemiringConst$fSemiringIdentity $fSemiringSum$fSemiringProductViterbi getViterbi ŁukasiewiczgetŁukasiewiczDivision getDivision Bottleneck getBottleneck$fMonadViterbi$fMonadŁukasiewicz$fMonadDivision$fMonadBottleneck$fApplicativeViterbi$fApplicativeDivision$fApplicativeŁukasiewicz$fApplicativeBottleneck$fFoldableViterbi$fFoldableŁukasiewicz$fFoldableDivision$fFoldableBottleneck$fFunctorViterbi$fFunctorŁukasiewicz$fFunctorDivision$fFunctorBottleneck$fSemiringViterbi$fArbitraryViterbi$fSemiringŁukasiewicz$fArbitraryŁukasiewicz$fArbitraryDivision$fSemiringDivision$fSemiringBottleneck$fEqBottleneck$fOrdBottleneck$fReadBottleneck$fShowBottleneck$fBoundedBottleneck$fGenericBottleneck$fGeneric1Bottleneck$fNumBottleneck$fArbitraryBottleneck $fEqDivision $fOrdDivision$fReadDivision$fShowDivision$fBoundedDivision$fGenericDivision$fGeneric1Division $fNumDivision$fEqŁukasiewicz$fOrdŁukasiewicz$fReadŁukasiewicz$fShowŁukasiewicz$fBoundedŁukasiewicz$fGenericŁukasiewicz$fGeneric1Łukasiewicz$fNumŁukasiewicz $fEqViterbi $fOrdViterbi $fReadViterbi $fShowViterbi$fBoundedViterbi$fGenericViterbi$fGeneric1Viterbi $fNumViterbi plusAssocmulAssocplusComm mulDistribL mulDistribRplusIdmulId semiringLawsbase Data.MonoidProductGHC.NumNumSumGHC.BaseEndomappendData.SemigroupMinghc-prim GHC.Classesmin+Maxmaxcontainers-0.5.7.1 Data.Set.BaseSet WrapBinarycartProdGHC.Realgcdlcm