[documentation ekmett@gmail.com**20090327081650] { addfile ./dist/doc/html/monoids/Data-Ring-FromNum.html hunk ./dist/doc/html/monoids/Data-Ring-FromNum.html 1 + + +Data.Ring.FromNum
 monoids-0.1.2: Lots of MonoidsSource codeContentsIndex
Data.Ring.FromNum
Documentation
module Data.Ring
newtype FromNum a Source
Constructors
FromNum
getFromNum :: a
show/hide Instances
Num a => Reducer Integer (FromNum a)
Eq a => Eq (FromNum a)
Num a => Num (FromNum a)
Show a => Show (FromNum a)
Num a => Monoid (FromNum a)
Num a => MultiplicativeMonoid (FromNum a)
Num a => Seminearring (FromNum a)
Num a => Group (FromNum a)
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/src/Data-Ring-FromNum.html hunk ./dist/doc/html/monoids/src/Data-Ring-FromNum.html 1 + + + + +Data/Ring/FromNum.hs + + + +
{-# LANGUAGE FlexibleInstances, FlexibleContexts, MultiParamTypeClasses, GeneralizedNewtypeDeriving #-}
+module Data.Ring.FromNum 
+    ( module Data.Ring
+    , FromNum(FromNum, getFromNum)
+    ) where
+
+import Data.Ring
+import Data.Monoid.Reducer
+
+newtype FromNum a = FromNum { getFromNum :: a } deriving (Eq,Show,Num)
+
+instance Num a => Monoid (FromNum a) where
+    mempty = fromInteger 0
+    mappend = (+)
+
+instance Num a => Group (FromNum a) where
+    minus = (-)
+    gnegate = negate
+    
+instance Num a => MultiplicativeMonoid (FromNum a) where
+    one = fromInteger 1
+    times = (*)
+
+instance Num a => Seminearring (FromNum a)
+    
+instance Num a => Reducer Integer (FromNum a) where
+    unit = fromInteger
+
+ }