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 +132/−128
- manual/Funcons/Core/Computations/Normal/GeneratingBuiltin.hs +1/−0
- manual/Funcons/Core/Manual.hs +0/−1
- manual/Funcons/Core/Values/Composite/DatatypesBuiltin.hs +1/−1
- manual/Funcons/Core/Values/Composite/MapsBuiltin.hs +0/−10
- manual/Funcons/Core/Values/Composite/SetsBuiltin.hs +0/−2
- manual/Funcons/Core/Values/Primitive/FloatsBuiltin.hs +1/−2
- manual/Funcons/Core/Values/Primitive/IntegersBuiltin.hs +0/−2
- manual/Funcons/MetaProgramming.hs +2/−2
- src/Funcons/Entities.hs +0/−2
- src/Funcons/GLLParser.hs +8/−2
- src/Funcons/MSOS.hs +12/−20
- src/Funcons/Patterns.hs +3/−5
- src/Funcons/RunOptions.hs +9/−2
- src/Funcons/Simulation.hs +0/−2
- src/Funcons/Substitution.hs +0/−2
- src/Funcons/Types.hs +0/−3
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