packages feed

funcons-tools 0.2.0.15 → 0.2.0.16

raw patch · 17 files changed

+169/−186 lines, 17 filesdep ~basedep ~bvdep ~directoryPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base, bv, directory, exploring-interpreters, funcons-values, gll, haskeline, mtl, multiset, random, regex-applicative, split, text, transformers, vector

API changes (from Hackage documentation)

- Funcons.Core.Manual: initialise_generating_ :: Funcons
- Funcons.Core.Manual: stepInitialise_generating :: [Funcons] -> Rewrite Rewritten
- Funcons.EDSL: type Control = Map Name (Maybe Values)
+ Funcons.EDSL: type Control = Map Name Maybe Values
- Funcons.EDSL: type Input m = Map Name ([[Values]], Maybe (m Funcons))
+ Funcons.EDSL: type Input (m :: Type -> Type) = Map Name ([[Values]], Maybe m Funcons)
- Funcons.GLLParser: lexer :: String -> [Token]
+ Funcons.GLLParser: lexer :: SubsumesToken t => String -> [t]
- Funcons.GLLParser: lexerEither :: String -> Either String [Token]
+ Funcons.GLLParser: lexerEither :: SubsumesToken t => String -> Either String [t]
- Funcons.MetaProgramming: atom_gen_entity :: Name
+ Funcons.MetaProgramming: atom_gen_entity :: Text
- Funcons.MetaProgramming: cmp_MSOSReader :: forall {m :: Type -> TYPE LiftedRep}. Interactive m => FunconLibrary -> TypeRelation -> Funcons -> MSOSReader m
+ Funcons.MetaProgramming: cmp_MSOSReader :: forall {m :: Type -> Type}. Interactive m => FunconLibrary -> TypeRelation -> Funcons -> MSOSReader m
- Funcons.MetaProgramming: env_entity :: Name
+ Funcons.MetaProgramming: env_entity :: Text
- Funcons.MetaProgramming: store_entity :: Name
+ Funcons.MetaProgramming: store_entity :: Text
- Funcons.RunOptions: allOptions :: [[Char]]
+ Funcons.RunOptions: allOptions :: [String]
- Funcons.RunOptions: allOptions_ :: [[Char]]
+ Funcons.RunOptions: allOptions_ :: [String]
- Funcons.RunOptions: booleanOptions :: [[Char]]
+ Funcons.RunOptions: booleanOptions :: [String]
- Funcons.RunOptions: booleanOptions_ :: [[Char]]
+ Funcons.RunOptions: booleanOptions_ :: [String]
- Funcons.RunOptions: cfg_keywords :: [[Char]]
+ Funcons.RunOptions: cfg_keywords :: [String]
- Funcons.RunOptions: stringOptions :: [[Char]]
+ Funcons.RunOptions: stringOptions :: [String]
- Funcons.RunOptions: stringOptions_ :: [[Char]]
+ Funcons.RunOptions: stringOptions_ :: [String]

Files

funcons-tools.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                funcons-tools-version:             0.2.0.15+version:             0.2.0.16 synopsis:            A modular interpreter for executing funcons description:     The PLanCompS project (<http://plancomps.org>) has developed a component-based approach to formal semantics.@@ -33,6 +33,10 @@ -- extra-source-files: cabal-version:       >=1.10 +source-repository head+  type: git+  location: https://github.com/plancomps/funcons-tools+ library   exposed-modules:        Funcons.EDSL                         , Funcons.Tools@@ -43,20 +47,20 @@                         , Funcons.Parser                         , Funcons.GLLParser                         , Funcons.RunOptions-  build-depends:       base >=4.8 && <= 5-                      ,text >= 1.2+  build-depends:       base >=4.8 && < 6+                      ,text >= 2.1 && <3                       ,containers >= 0.5 && < 0.7-                      ,vector>=0.12-                      ,bv >= 0.5-                      ,multiset >= 0.3-                      ,split-                      ,directory-                      ,mtl >= 2.2.1-                      ,gll >= 0.4.0.9-                      ,regex-applicative-                      ,funcons-values >= 0.1.0.9-                      ,random >= 1.1-                      ,haskeline >= 0.8.1.2+                      ,vector>=0.12 && <0.14+                      ,bv >= 0.5 && < 0.6+                      ,multiset >= 0.3 && <0.4+                      ,split >= 0.2 && < 0.3+                      ,directory >= 1.2 && < 1.4+                      ,mtl >= 2.2.1 && < 2.4+                      ,gll >= 0.4.1.2 && < 0.5+                      ,regex-applicative >= 0.3 && < 0.4+                      ,funcons-values >= 0.1.0.9 && < 0.2+                      ,random >= 1.1 && < 1.4+                      ,haskeline >= 0.8.1.2 && < 0.9   hs-source-dirs:      src, cbs, manual   default-language:    Haskell2010   other-extensions:    OverloadedStrings@@ -147,132 +151,132 @@ executable funcons-repl     main-is:             REPL.hs    other-extensions:    OverloadedStrings-   build-depends:        base >=4.8 && <= 5-                        ,text >= 1.2+   build-depends:       base >=4.8 && < 6+                        ,text >= 2.1 && <3                         ,containers >= 0.5 && < 0.7-                        ,vector>=0.12-                        ,bv >= 0.5-                        ,multiset >= 0.3-                        ,split-                        ,directory-                        ,mtl >= 2.2.1-                        ,gll >= 0.4.0.9-                        ,regex-applicative-                        ,funcons-values >= 0.1.0.9-                        ,exploring-interpreters >= 1.3.0.0-                        ,random >= 1.1-                        ,haskeline >= 0.8.1-                        ,transformers >= 0.5.6+                        ,vector>=0.12 && <0.14+                        ,bv >= 0.5 && < 0.6+                        ,multiset >= 0.3 && <0.4+                        ,split >= 0.2 && < 0.3+                        ,directory >= 1.2 && < 1.4+                        ,mtl >= 2.2.1 && < 2.4+                        ,gll >= 0.4.1.2 && < 0.5+                        ,regex-applicative >= 0.3 && < 0.4+                        ,funcons-values >= 0.1.0.9 && < 0.2+                        ,random >= 1.1 && < 1.4+                        ,haskeline >= 0.8.1.2 && < 0.9+                        ,exploring-interpreters >= 1.5 && < 1.7+                        ,transformers >= 0.5.6 && < 0.7    hs-source-dirs:      src, manual, cbs    default-language:    Haskell2010  --  ghc-options:         -rtsopts-  other-modules:        -        Funcons.Core.Computations.Abnormal.Abrupting.Abrupting-        Funcons.Core.Computations.Abnormal.Breaking.Breaking-        Funcons.Core.Computations.Abnormal.Continuing.Continuing-        Funcons.Core.Computations.Abnormal.Controlling.Controlling-        Funcons.Core.Computations.Abnormal.Failing.Failing-        Funcons.Core.Computations.Abnormal.Returning.Returning-        Funcons.Core.Computations.Abnormal.Sticking-        Funcons.Core.Computations.Abnormal.Throwing.Throwing-        Funcons.Core.Computations.AbnormalBuiltin-        Funcons.Core.Computations.Normal.Binding.Binding-        Funcons.Core.Computations.Normal.Flowing.Flowing-        Funcons.Core.Computations.Normal.Generating.Generating-        Funcons.Core.Computations.Normal.GeneratingBuiltin-        Funcons.Core.Computations.Normal.Giving.Giving-        Funcons.Core.Computations.Normal.Interacting.Interacting-        Funcons.Core.Computations.Normal.Linking.Linking-        Funcons.Core.Computations.Normal.Storing.Storing-        Funcons.Core.Computations.TypesBuiltin,-     -- unstable-        Funcons.Core.Computations.Abnormal.Postponing.Postponing,-        Funcons.Core.Computations.Normal.Indexing.Indexing,-        Funcons.Core.Computations.Normal.Memos.Memos,-        Funcons.Core.Computations.Threads.Multithreading.Multithreading,-        Funcons.Core.Computations.Threads.Synchronising.Locks.Locks,-        Funcons.Core.Computations.Threads.Synchronising.Notifications.Notifications,-        Funcons.Core.Computations.Threads.Synchronising.Synchronising-        Funcons.Core-        Funcons.Core.Library-        Funcons.Core.Manual-        Funcons.Core.Values.Abstraction.Functions.Functions-        Funcons.Core.Values.Abstraction.Generic.Generic-        Funcons.Core.Values.Abstraction.Patterns.Patterns-        Funcons.Core.Values.Abstraction.Thunks.Thunks-        Funcons.Core.Values.Composite.ASTs.ASTs-        Funcons.Core.Values.Composite.Bits.Bits-        Funcons.Core.Values.Composite.Classes.Classes-        Funcons.Core.Values.Composite.Datatypes.Datatypes-        Funcons.Core.Values.Composite.DatatypesBuiltin-        Funcons.Core.Values.Composite.Graphs.Graphs-        Funcons.Core.Values.Composite.GraphsBuiltin-        Funcons.Core.Values.Composite.Lists.Lists-        Funcons.Core.Values.Composite.MapsBuiltin-        Funcons.Core.Values.Composite.MultisetsBuiltin-        Funcons.Core.Values.Composite.Objects.Objects-        Funcons.Core.Values.Composite.Records.Records-        Funcons.Core.Values.Composite.References.References-        Funcons.Core.Values.Composite.Sequences.Sequences-        Funcons.Core.Values.Composite.SetsBuiltin-        Funcons.Core.Values.Composite.Strings.Strings-        Funcons.Core.Values.Composite.Trees.Trees-        Funcons.Core.Values.Composite.Tuples.Tuples-        Funcons.Core.Values.Composite.Variants.Variants-        Funcons.Core.Values.Composite.Vectors.Vectors-        Funcons.Core.Values.Primitive.Atoms-        Funcons.Core.Values.Primitive.BitsBuiltin-        Funcons.Core.Values.Primitive.BoolBuiltin-        Funcons.Core.Values.Primitive.Booleans.Booleans-        Funcons.Core.Values.Primitive.Characters.Characters-        Funcons.Core.Values.Primitive.CharactersBuiltin-        Funcons.Core.Values.Primitive.Floats.Floats-        Funcons.Core.Values.Primitive.FloatsBuiltin-        Funcons.Core.Values.Primitive.Integers.Integers-        Funcons.Core.Values.Primitive.IntegersBuiltin-        Funcons.Core.Values.Primitive.Null.Null-        Funcons.Core.Values.Primitive.StringsBuiltin-        Funcons.Core.Values.TypesBuiltin-        Funcons.Core.Values.ValueTypes.ValueTypes-        Funcons.EDSL-        Funcons.Entities-        Funcons.Exceptions-        Funcons.GLLParser-        Funcons.MSOS-        Funcons.Parser-        Funcons.Patterns-        Funcons.Printer-        Funcons.RunOptions-        Funcons.Simulation-        Funcons.Substitution-        Funcons.Tools-        Funcons.TypeSubstitution-        Funcons.Types-        Funcons.Explorer+   other-modules:        +                        Funcons.Core.Computations.Abnormal.Abrupting.Abrupting+                        Funcons.Core.Computations.Abnormal.Breaking.Breaking+                        Funcons.Core.Computations.Abnormal.Continuing.Continuing+                        Funcons.Core.Computations.Abnormal.Controlling.Controlling+                        Funcons.Core.Computations.Abnormal.Failing.Failing+                        Funcons.Core.Computations.Abnormal.Returning.Returning+                        Funcons.Core.Computations.Abnormal.Sticking+                        Funcons.Core.Computations.Abnormal.Throwing.Throwing+                        Funcons.Core.Computations.AbnormalBuiltin+                        Funcons.Core.Computations.Normal.Binding.Binding+                        Funcons.Core.Computations.Normal.Flowing.Flowing+                        Funcons.Core.Computations.Normal.Generating.Generating+                        Funcons.Core.Computations.Normal.GeneratingBuiltin+                        Funcons.Core.Computations.Normal.Giving.Giving+                        Funcons.Core.Computations.Normal.Interacting.Interacting+                        Funcons.Core.Computations.Normal.Linking.Linking+                        Funcons.Core.Computations.Normal.Storing.Storing+                        Funcons.Core.Computations.TypesBuiltin,+                     -- unstable+                        Funcons.Core.Computations.Abnormal.Postponing.Postponing,+                        Funcons.Core.Computations.Normal.Indexing.Indexing,+                        Funcons.Core.Computations.Normal.Memos.Memos,+                        Funcons.Core.Computations.Threads.Multithreading.Multithreading,+                        Funcons.Core.Computations.Threads.Synchronising.Locks.Locks,+                        Funcons.Core.Computations.Threads.Synchronising.Notifications.Notifications,+                        Funcons.Core.Computations.Threads.Synchronising.Synchronising+                        Funcons.Core+                        Funcons.Core.Library+                        Funcons.Core.Manual+                        Funcons.Core.Values.Abstraction.Functions.Functions+                        Funcons.Core.Values.Abstraction.Generic.Generic+                        Funcons.Core.Values.Abstraction.Patterns.Patterns+                        Funcons.Core.Values.Abstraction.Thunks.Thunks+                        Funcons.Core.Values.Composite.ASTs.ASTs+                        Funcons.Core.Values.Composite.Bits.Bits+                        Funcons.Core.Values.Composite.Classes.Classes+                        Funcons.Core.Values.Composite.Datatypes.Datatypes+                        Funcons.Core.Values.Composite.DatatypesBuiltin+                        Funcons.Core.Values.Composite.Graphs.Graphs+                        Funcons.Core.Values.Composite.GraphsBuiltin+                        Funcons.Core.Values.Composite.Lists.Lists+                        Funcons.Core.Values.Composite.MapsBuiltin+                        Funcons.Core.Values.Composite.MultisetsBuiltin+                        Funcons.Core.Values.Composite.Objects.Objects+                        Funcons.Core.Values.Composite.Records.Records+                        Funcons.Core.Values.Composite.References.References+                        Funcons.Core.Values.Composite.Sequences.Sequences+                        Funcons.Core.Values.Composite.SetsBuiltin+                        Funcons.Core.Values.Composite.Strings.Strings+                        Funcons.Core.Values.Composite.Trees.Trees+                        Funcons.Core.Values.Composite.Tuples.Tuples+                        Funcons.Core.Values.Composite.Variants.Variants+                        Funcons.Core.Values.Composite.Vectors.Vectors+                        Funcons.Core.Values.Primitive.Atoms+                        Funcons.Core.Values.Primitive.BitsBuiltin+                        Funcons.Core.Values.Primitive.BoolBuiltin+                        Funcons.Core.Values.Primitive.Booleans.Booleans+                        Funcons.Core.Values.Primitive.Characters.Characters+                        Funcons.Core.Values.Primitive.CharactersBuiltin+                        Funcons.Core.Values.Primitive.Floats.Floats+                        Funcons.Core.Values.Primitive.FloatsBuiltin+                        Funcons.Core.Values.Primitive.Integers.Integers+                        Funcons.Core.Values.Primitive.IntegersBuiltin+                        Funcons.Core.Values.Primitive.Null.Null+                        Funcons.Core.Values.Primitive.StringsBuiltin+                        Funcons.Core.Values.TypesBuiltin+                        Funcons.Core.Values.ValueTypes.ValueTypes+                        Funcons.EDSL+                        Funcons.Entities+                        Funcons.Exceptions+                        Funcons.GLLParser+                        Funcons.MSOS+                        Funcons.Parser+                        Funcons.Patterns+                        Funcons.Printer+                        Funcons.RunOptions+                        Funcons.Simulation+                        Funcons.Substitution+                        Funcons.Tools+                        Funcons.TypeSubstitution+                        Funcons.Types+                        Funcons.Explorer  executable runfct    main-is:             Main.hs    other-extensions:    OverloadedStrings-   build-depends:        base >=4.8 && <= 5-                        ,text >= 1.2+   build-depends:       base >=4.8 && < 6+                        ,text >= 2.1 && <3                         ,containers >= 0.5 && < 0.7-                        ,vector>=0.12-                        ,bv >= 0.5-                        ,multiset >= 0.3-                        ,split-                        ,directory-                        ,mtl >= 2.2.1-                        ,gll >= 0.4.0.9-                        ,regex-applicative-                        ,funcons-values >= 0.1.0.9-                        ,exploring-interpreters >= 1.3.0.0-                        ,random >= 1.1-                        ,haskeline >= 0.8.1-                        ,transformers >= 0.5.6+                        ,vector>=0.12 && <0.14+                        ,bv >= 0.5 && < 0.6+                        ,multiset >= 0.3 && <0.4+                        ,split >= 0.2 && < 0.3+                        ,directory >= 1.2 && < 1.4+                        ,mtl >= 2.2.1 && < 2.4+                        ,gll >= 0.4.1.2 && < 0.5+                        ,regex-applicative >= 0.3 && < 0.4+                        ,funcons-values >= 0.1.0.9 && < 0.2+                        ,random >= 1.1 && < 1.4+                        ,haskeline >= 0.8.1.2 && < 0.9+                        ,exploring-interpreters >= 1.5 && < 1.7+                        ,transformers >= 0.5.6 && < 0.7    hs-source-dirs:      src, manual, cbs    default-language:    Haskell2010  --  ghc-options:         -rtsopts-  other-modules:        +   other-modules:                 Funcons.Core.Computations.Abnormal.Abrupting.Abrupting         Funcons.Core.Computations.Abnormal.Breaking.Breaking         Funcons.Core.Computations.Abnormal.Continuing.Continuing
manual/Funcons/Core/Computations/Normal/GeneratingBuiltin.hs view
@@ -20,5 +20,6 @@             env <- getMutPatt "used-atom-set" [VPWildCard] env             putMut "used-atom-set" [reserved_atoms]             stepTermTo (TVar "P") env+          reserved_atoms :: Values           reserved_atoms = Set (fromList []) 
manual/Funcons/Core/Manual.hs view
@@ -41,7 +41,6 @@ --import Funcons.Core.Values.Composite.TuplesBuiltin hiding (library)  import qualified Funcons.Core.Computations.Normal.GeneratingBuiltin-import qualified Funcons.Core.Computations.AbnormalBuiltin import qualified Funcons.Core.Values.Composite.SetsBuiltin import qualified Funcons.Core.Values.Composite.MultisetsBuiltin --import qualified Funcons.Core.Values.Composite.ListsBuiltin
manual/Funcons/Core/Values/Composite/DatatypesBuiltin.hs view
@@ -3,7 +3,7 @@ module Funcons.Core.Values.Composite.DatatypesBuiltin where  import Funcons.EDSL-import Funcons.MSOS (evalStrictSequence, evalSequence, Strictness(..))+import Funcons.MSOS (evalStrictSequence, evalSequence) import Funcons.Operations (Values(..), Types(..), ComputationTypes(..)) import Data.Text (pack,unpack) 
manual/Funcons/Core/Values/Composite/MapsBuiltin.hs view
@@ -2,19 +2,9 @@  module Funcons.Core.Values.Composite.MapsBuiltin where -import Control.Applicative ((<$>))- import Funcons.EDSL hiding (map_)-import Funcons.MSOS (rewrittens)-import Funcons.Core.Values.Primitive.BoolBuiltin-import Funcons.Core.Values.Composite.SetsBuiltin  import qualified Funcons.Operations as VAL--import qualified Data.Set as S-import qualified Data.Map as M--import Data.Foldable (foldrM)  library = libFromList [     ("map-empty", fromNullaryValOp map_empty_ VAL.map_empty_)
manual/Funcons/Core/Values/Composite/SetsBuiltin.hs view
@@ -5,8 +5,6 @@ import Funcons.EDSL hiding (set_) import qualified Funcons.Operations as VAL  -import qualified Data.Set as S- library = libFromList [     ("set", fromValOp set_ VAL.set_)   , ("set-empty", fromNullaryValOp set_empty_ VAL.set_empty_)
manual/Funcons/Core/Values/Primitive/FloatsBuiltin.hs view
@@ -3,8 +3,7 @@ module Funcons.Core.Values.Primitive.FloatsBuiltin where  import Funcons.EDSL-import Funcons.Operations (Values(..), ComputationTypes(..), Types(..), isIEEEFormat, doubleFromIEEEFormat, tobool)-import Funcons.Core.Values.Primitive.BoolBuiltin+import Funcons.Operations (Values(..), isIEEEFormat, doubleFromIEEEFormat, tobool) import Funcons.Core.Values.Primitive.IntegersBuiltin  import Data.Fixed (mod')
manual/Funcons/Core/Values/Primitive/IntegersBuiltin.hs view
@@ -5,8 +5,6 @@ import Funcons.EDSL hiding (integers_) import qualified Funcons.Operations as VAL -import Funcons.Core.Values.Primitive.BoolBuiltin- library = libFromList [     ("integer-add", fromValOp integer_add_ VAL.integer_add_)   , ("int-add", fromValOp integer_add_ VAL.integer_add_)
manual/Funcons/MetaProgramming.hs view
@@ -8,12 +8,11 @@ import Funcons.MSOS import Funcons.EDSL import Funcons.Types-import Funcons.Patterns import Funcons.RunOptions import Funcons.Simulation  import Data.Maybe (fromJust)-import Data.Text (pack, unpack)+import Data.Text (pack, unpack, Text) import qualified Data.Map as M import qualified Data.Set as S @@ -94,6 +93,7 @@           putMut store_entity [Map M.empty]           withInh env_entity [env] (ctRel f) +env_entity, store_entity, atom_gen_entity :: Text  env_entity = "environment" store_entity = "store" atom_gen_entity = "used-atom-set"
src/Funcons/Entities.hs view
@@ -25,10 +25,8 @@ import Funcons.Exceptions import Funcons.Patterns -import Control.Applicative import Control.Arrow import qualified Data.Map as M-import Data.Text  -- defaults -- | A list of 'EntityDefault's is used to declare (and possibly initialise)
src/Funcons/GLLParser.hs view
@@ -63,11 +63,15 @@   , keychars    = fct_keychars   } +lexer :: SubsumesToken t => String -> [t] lexer = GLL.Combinators.lexer fct_lexerSettings+lexerEither :: SubsumesToken t => String -> Either String [t] lexerEither = GLL.Combinators.lexerEither fct_lexerSettings +fct_keywords :: [String] fct_keywords = ["void", "depends", "forall", "type_abs"                ,"typevar", "?", "*", "+", "|->", "=>"]+fct_keychars :: [Char] fct_keychars = "{}(),'\"[]|^&~"  lName = (:) <$> psym isLower <*> many (psym (\c -> isAlphaNum c || c == '-'))@@ -114,7 +118,8 @@ pFunconss = "FUNCONS-SEQUENCE"    <::=  Left  <$$> pFuncons   <||>  Right . merge <$$> parens (multipleSepBy pFunconss (keychar ','))-  where merge = foldr op [] +  where merge :: [Either Funcons [Funcons]] -> [Funcons]+        merge = foldr op []            where op (Left f) acc = f:acc                 op (Right fs) acc = fs++acc @@ -139,7 +144,8 @@   <||> string__  <$$> string_lit   <||> mk_integers . toInteger <$$> int_lit    <||> IEEE_Float_64 . fst . head . readFloat <$$> pRatioAsString- where  pRatioAsString = "RATIOasSTRING" -- NOT OK, would parse "-2.-3"+ where  pRatioAsString :: Parser String+        pRatioAsString = "RATIOasSTRING" -- NOT OK, would parse "-2.-3"           <:=> (\m l -> show m ++ "." ++ show l) <$$> int_lit <** keychar '.'                                                  <**> int_lit 
src/Funcons/MSOS.hs view
@@ -46,15 +46,11 @@ import Funcons.Simulation import qualified Funcons.Operations as VAL -import Control.Applicative-import Control.Arrow ((***))-import Control.Monad.Writer hiding ((<>))-import Control.Monad.Fail+import Control.Monad (liftM, ap) import Data.Function (on) import Data.Maybe (isJust, isNothing, fromJust) import Data.List (foldl', intercalate, partition, sortBy) import Data.Text (unpack)-import Data.Semigroup  import qualified Data.Map as M @@ -207,15 +203,13 @@                     (Either IException a, RewriteState, RewriteWriterr))}  instance Applicative Rewrite where-  pure = return+  pure a = Rewrite (\_ st -> (Right a, st, mempty))   (<*>) = ap  instance Functor Rewrite where   fmap = liftM  instance Monad Rewrite  where-  return a = Rewrite (\_ st -> (Right a, st, mempty))-   (Rewrite f) >>= k = Rewrite (\ctxt st ->                     let res1@(e_a1,st1,cs1) = f ctxt st                      in case e_a1 of @@ -225,11 +219,10 @@                                         in (a2,st2,cs1 <> cs2))  instance Semigroup RewriteWriterr where-  (<>) = mappend+  (RewriteWriterr cs1) <> (RewriteWriterr cs2) = RewriteWriterr (cs1 <> cs2)  instance Monoid RewriteWriterr where     mempty = RewriteWriterr mempty-    (RewriteWriterr cs1) `mappend` (RewriteWriterr cs2) = RewriteWriterr (cs1 `mappend` cs2)  liftRewrite :: Rewrite a -> MSOS a liftRewrite ev = MSOS $ \ctxt mut -> @@ -315,15 +308,13 @@                         -> m (Either IException a, MSOSState m, MSOSWriter)) }  instance Applicative MSOS where-  pure = return+  pure a = MSOS (\_ mut -> return (Right a,mut,mempty))   (<*>) = ap  instance Functor MSOS where   fmap = liftM  instance Monad MSOS  where-  return a = MSOS (\_ mut -> return (Right a,mut,mempty))-   (MSOS f) >>= k = MSOS (\ctxt mut -> do                     res1@(e_a1,mut1,wr1) <- f ctxt mut                      case e_a1 of @@ -337,12 +328,11 @@   fail = liftRewrite . internal   instance Semigroup MSOSWriter where-  (<>) = mappend+  (MSOSWriter x1 x2 x3) <> (MSOSWriter y1 y2 y3) = +      MSOSWriter (x1 `unionCTRL` y1) (x2 `unionOUT` y2) (x3 `mappend` y3)   instance Monoid MSOSWriter where     mempty = MSOSWriter mempty mempty mempty-    (MSOSWriter x1 x2 x3) `mappend` (MSOSWriter y1 y2 y3) = -        MSOSWriter (x1 `unionCTRL` y1) (x2 `unionOUT` y2) (x3 `mappend` y3)   -- | A map storing the values of /mutable/ entities. type Mutable      = M.Map Name [Values]@@ -507,12 +497,11 @@ data Counters = Counters !Int !Int !Int !Int !Int !Int !Int !Int   instance Semigroup Counters where-  (<>) = mappend+  (Counters x1 x2 x3 x4 x5 x6 x7 x8) <> (Counters y1 y2 y3 y4 y5 y6 y7 y8) = +      Counters (x1+y1) (x2+y2) (x3+y3) (x4+y4) (x5+y5) (x6+y6) (x7+y7) (x8+y8)  instance Monoid Counters where     mempty = Counters 0 0 0 0 0 0 0 0-    (Counters x1 x2 x3 x4 x5 x6 x7 x8) `mappend` (Counters y1 y2 y3 y4 y5 y6 y7 y8) = -        Counters (x1+y1) (x2+y2) (x3+y3) (x4+y4) (x5+y5) (x6+y6) (x7+y7) (x8+y8)  emptyCounters x1 x2 x3 x4 x5 x6 x7 x8 =      mempty { ewriter = mempty {counters = Counters x1 x2 x3 x4 x5 x6 x7 x8}}@@ -549,6 +538,7 @@ ppCounters cs =  "number of (" ++ counterKeys ++ "): (" ++ displayCounters cs ++ ")" +counterKeys :: String counterKeys = "restarts,rewrites,(attempts),steps,refocus,premises,backtracking(outer),backtracking(inner)" displayCounters (Counters steps rewrites rattempts restarts refocus delegations bout bin) =    intercalate "," $ @@ -863,7 +853,8 @@ evalSequence :: [Strictness] -> [Funcons] ->      ([Funcons] -> Rewrite Rewritten) -> ([Funcons] -> Funcons) -> Rewrite Rewritten evalSequence strns args cont cons = do-    let args_map = zip [1..] (zip strns args)+    let args_map :: [(Int, (Strictness, Funcons))]+        args_map = zip [1..] (zip strns args)      let evalSeqAux args_done args_undone            | null args_undone = cont (map (snd . snd) (sorter args_done))@@ -891,6 +882,7 @@  where  isDone (NonStrict, _)     = True         isDone (Strict, FValue _) = True         isDone (Strict,_)         = False+        sorter :: [(Int, b)] -> [(Int, b)]         sorter = sortBy (compare `on` fst)  -- | Yield an 'MSOS' computation as a fully rewritten term.
src/Funcons/Patterns.hs view
@@ -9,14 +9,11 @@ import Funcons.Types import Funcons.Substitution import Funcons.Exceptions-import Funcons.Operations (isGround) import Funcons.RunOptions (SourceOfND(..)) -import Control.Applicative-import Control.Monad (foldM, forM)+import Control.Monad (forM) import Data.Function (on) import Data.List (sortBy, intercalate)-import Data.Monoid import Data.Text (unpack) import Data.Foldable (toList) import qualified Data.Map as M @@ -58,7 +55,8 @@               -- sorts the result in order of preference               sortWithPref :: [(Int, Env)] -> [(Int, Env)]                sortWithPref = sortBy (comparison `on` fst)-                where comparison = case mty of+                where comparison :: Ord a => a -> a -> Ordering+                      comparison = case mty of                         Nothing   -> compare      -- no annotation => shortest match                         Just  _   -> flip compare -- annoration => longest match 
src/Funcons/RunOptions.hs view
@@ -11,7 +11,7 @@ import qualified Data.Map as M import Control.Monad (when) import GLL.Types.TypeCompose (OO(..))-import Data.Text (pack)+import Data.Text (pack, Text) import Data.List (isSuffixOf, isPrefixOf) import Data.List.Split (splitOn) @@ -158,16 +158,20 @@ inputValues :: RunOptions -> InputValues inputValues = given_inputs +booleanOptions :: [String] booleanOptions =    ["refocus", "full-environments", "hide-result", "display-steps"   ,"no-abrupt-termination", "interactive-mode", "string-inputs"   ,"format-string-outputs", "hide-tests", "show-output-only"   ,"auto-config", "csv", "csv-keys"]+booleanOptions_ :: [String] booleanOptions_ = map ("--" ++) booleanOptions +stringOptions :: [String] stringOptions = ["display-mutable-entity", "hide-output-entity"     , "hide-control-entity", "hide-input-entity", "max-restarts"     , "seed", "non-deterministic"]+stringOptions_ :: [String] stringOptions_ = map ("--" ++) stringOptions  allOptions = "funcon-term" : booleanOptions ++ stringOptions@@ -233,7 +237,9 @@   ,   keychars = (keychars fct_lexerSettings) ++ cfg_keychars   } +cfg_keychars :: [Char] cfg_keychars = ":;="+cfg_keywords :: [String] cfg_keywords = allOptions ++ ["result-term", "general", "tests", "funcons", "inputs"]  pRunOptions :: Parser RunOptions@@ -277,7 +283,8 @@ pTestOutcomes :: Parser RunOptions pTestOutcomes = "TEST-OUTCOMES"   <:=> toOptions <$$> (M.union <$$> pResult <**> pEntityValues)-    where pResult = mStoreResult <$$>+    where pResult :: AltExpr Token (M.Map Text [Funcons])+          pResult = mStoreResult <$$>                       optional (id <$$ keyword "result-term" <** keychar ':'                                              <**> pFunconsSeq <** keychar ';')             where mStoreResult Nothing = M.empty
src/Funcons/Simulation.hs view
@@ -3,12 +3,10 @@ module Funcons.Simulation where  import Funcons.Types-import Funcons.Exceptions import Funcons.Printer import Funcons.Parser (fvalue_parse_either) import Funcons.RunOptions -import Control.Applicative import Control.Monad.State import System.Console.Haskeline import qualified Data.Map as M
src/Funcons/Substitution.hs view
@@ -11,9 +11,7 @@ import Funcons.Types import Funcons.MSOS -import Control.Applicative import Control.Monad-import Data.Monoid import qualified Data.Map as M  -- | An environment mapping meta-variables to funcon terms.
src/Funcons/Types.hs view
@@ -7,14 +7,11 @@ import qualified Funcons.Operations as VAL hiding (SortErr, ValueOp) import Funcons.Operations hiding (Name, Values, ComputationTypes, Types, isMap, isNull, isSet, map_empty_, isEnv, isDefinedVal, isChar, isVec, isType, isList, isNat, isInt, atoms_, integers_, values_, set_, list_, tuple_, atom_, nulltype_, non_null_values_, types_, value_types_, toList, isList, libFromList, listUnites, null) -import qualified Data.Char as C import qualified Data.Map as M import qualified Data.Set as S-import qualified Data.MultiSet as MS import qualified Data.Vector as V import Data.Maybe (isJust) import Data.Text (Text)-import Data.Ratio  type MetaVar = String type Name = Text