Improve GNUmakefile.
[comptalang.git] / lcc / Hcompta / LCC / Read.hs
index ad52a7068b30f52cbdf0f3488fe8b6b9d9e6a057..cdfeabb8f62048d93010ede3db59fd00fdb2ce48 100644 (file)
@@ -1,8 +1,6 @@
 {-# LANGUAGE AllowAmbiguousTypes #-}
 {-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE GADTs #-}
-{-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE UndecidableSuperClasses #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -19,7 +17,7 @@ import Data.Map.Strict (Map)
 import Data.Monoid (Monoid(..))
 import Data.Semigroup (Semigroup(..))
 import Data.Text (Text)
-import Data.Typeable ()
+import Data.Typeable (Typeable)
 import System.FilePath (FilePath)
 import System.IO (IO)
 import Text.Show (Show)
@@ -38,11 +36,14 @@ import Hcompta.LCC.Journal
 import Hcompta.LCC.Compta
 import Hcompta.LCC.Posting
 import Hcompta.LCC.Transaction
+import Hcompta.LCC.Sym.Compta ()
 
 import Hcompta.LCC.Grammar
 import Hcompta.LCC.Megaparsec ()
 import qualified Hcompta.LCC.Lib.Strict as S
 
+import qualified Control.Monad.Classes as MC
+
 read ::
  forall ss src j e m a.
  Source src =>
@@ -80,15 +81,19 @@ readJournal ::
  FilePath ->
  (Transaction -> j -> j) ->
  IO (( Either (P.ParseError Char P.Dec)
-              (S.Either [At src (Error_Journal src)]
+              (S.Either [At src (Error_Compta src)]
                         (CanonFile, Journal j))
      , Context_Read src j )
     , Context_Sym src ss )
-readJournal path consTxn = readFile path $ read $ g_journal @ss consTxn
+readJournal path consTxn = readFile path $ read $ g_compta @ss consTxn
 
 readCompta ::
- forall src ss j g.
- g ~ P.ParsecT P.Dec Text (S.StateT (Context_Read src j) (S.StateT (Context_Sym src ss) IO)) =>
+ forall src ss' ss j g.
+ ss ~ (Sym.Proxy (Compta src ss') ': ss') =>
+ g ~ P.ParsecT P.Dec Text
+               (S.StateT (Context_Read src j)
+                         (S.StateT (Context_Sym src ss)
+                                   IO)) =>
  j ~ Map Date [Transaction] =>
  Monoid j =>
  Source src =>
@@ -99,14 +104,16 @@ readCompta ::
  Gram_Source src g =>
  Sym.Gram_Term_Atoms src ss g =>
  Sym.Inj_Name2Type ss =>
+ Typeable ss' =>
+ Typeable src =>
  Sym.Inj_Modules src ss =>
  FilePath ->
  -- (Transaction -> j -> j) ->
- IO (Either (Error_Read src) (Compta src ss, [At src Warning_Journal]))
+ IO (Either (Error_Read src) (Compta src ss' j, [At src Warning_Compta]))
 readCompta path = do
        ((r, ctxRead), ctxSym) <-
                readFile path $ read $
-               g_journal @ss (\t -> Map.insertWith (<>) (transaction_date t) [t])
+               g_compta @ss (\t -> Map.insertWith (<>) (transaction_date t) [t])
        return $ case r of
         Left err -> Left $ Error_Read_Syntax err
         Right r' ->
@@ -123,7 +130,7 @@ readCompta path = do
 -- * Type 'Error_Read'
 data Error_Read src
  =   Error_Read_Syntax   (P.ParseError Char P.Dec)
- |   Error_Read_Semantic [At src (Error_Journal src)]
+ |   Error_Read_Semantic [At src (Error_Compta src)]
  deriving (Eq, Show)
 
 {-