]> Git — Sourcephile - comptalang.git/blob - ledger/Hcompta/Format/Ledger/Quantity.hs
Modification : sépare hcompta-ledger de hcompta-lib.
[comptalang.git] / ledger / Hcompta / Format / Ledger / Quantity.hs
1 {-# LANGUAGE DeriveDataTypeable #-}
2 {-# LANGUAGE FlexibleContexts #-}
3 {-# LANGUAGE FlexibleInstances #-}
4 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
5 {-# LANGUAGE OverloadedStrings #-}
6 {-# LANGUAGE StandaloneDeriving #-}
7 {-# LANGUAGE TypeFamilies #-}
8 {-# OPTIONS_GHC -fno-warn-orphans #-}
9 module Hcompta.Format.Ledger.Quantity where
10
11 -- import Data.Data
12 import Data.Decimal
13 -- import Data.Eq (Eq(..))
14 -- import Data.Maybe (Maybe(..))
15 -- import Data.Ord (Ord(..))
16 import Data.Typeable ()
17 import Data.Word (Word8)
18 -- import Prelude (Num(..))
19
20 -- import qualified Hcompta.Polarize as Polarize
21 -- import qualified Hcompta.Quantity as Quantity
22 import qualified Hcompta.Filter.Amount as Filter.Amount
23
24 -- * Type 'Quantity'
25 type Quantity = Filter.Amount.Quantity
26 {-
27 deriving instance Data Quantity
28
29 instance Quantity.Zero Quantity where
30 quantity_zero = 0
31 quantity_null = (==) 0 -- . decimalMantissa
32 instance Quantity.Addable Quantity where
33 quantity_add = (+)
34 instance Quantity.Negable Quantity where
35 quantity_neg = negate
36 instance Polarize.Polarizable Quantity where
37 polarizable_negative q =
38 case q of
39 _ | q < 0 -> Just q
40 _ -> Nothing
41 polarizable_positive q =
42 case q of
43 _ | q <= 0 -> Nothing
44 _ -> Just q
45 -}
46
47 quantity_round :: Word8 -> Quantity -> Quantity
48 quantity_round = Data.Decimal.roundTo