post merge fix

parent e983f8e3
Pipeline #38064 failed with stages
in 75 minutes and 1 second
"fib[5,10]",parallel,2,1,0,2
"fib[100,110]",parallel,3,5,16,6
"fib[0,∞]",parallel,3,2,5,3
"fact[5,10]",parallel,2,1,0,2
"fact[10,15]",parallel,3,5,5,6
"fact[0,∞]",parallel,2,3,3,4
"ackermann([0,3],[0,3])",parallel,2,1,0,2
"ackermann([0,∞],[0,∞])",parallel,2,1,5,2
"even(Even,[0,∞])",parallel,2,1,2,2
"diverge5",parallel,2,3,3,4
"fib[5,10]",Chaotic.simple,1,0,37,32
"fib[100,110]",Chaotic.simple,1,1,8,5
"fib[0,∞]",Chaotic.simple,1,1,5,3
"fact[5,10]",Chaotic.simple,1,0,9,20
"fact[10,15]",Chaotic.simple,1,1,6,9
"fact[0,∞]",Chaotic.simple,1,1,3,4
"ackermann([0,3],[0,3])",Chaotic.simple,1,0,491,372
"ackermann([0,∞],[0,∞])",Chaotic.simple,1,1,5,2
"even(Even,[0,∞])",Chaotic.simple,1,1,3,4
"diverge5",Chaotic.simple,1,1,6,11
"fib[5,10]",Chaotic.inner,1,0,11,16
"fib[100,110]",Chaotic.inner,1,1,6,4
"fib[0,∞]",Chaotic.inner,1,1,5,3
"fact[5,10]",Chaotic.inner,1,0,0,10
"fact[10,15]",Chaotic.inner,1,1,3,6
"fact[0,∞]",Chaotic.inner,1,1,2,3
"ackermann([0,3],[0,3])",Chaotic.inner,1,0,153,186
"ackermann([0,∞],[0,∞])",Chaotic.inner,1,1,5,2
"even(Even,[0,∞])",Chaotic.inner,1,1,5,6
"diverge5",Chaotic.inner,1,1,1,6
"fib[5,10]",Chaotic.outer,1,0,11,16
"fib[100,110]",Chaotic.outer,1,1,6,4
"fib[0,∞]",Chaotic.outer,1,1,5,3
"fact[5,10]",Chaotic.outer,1,0,0,10
"fact[10,15]",Chaotic.outer,1,1,3,6
"fact[0,∞]",Chaotic.outer,1,1,2,3
"ackermann([0,3],[0,3])",Chaotic.outer,1,0,153,186
"ackermann([0,∞],[0,∞])",Chaotic.outer,1,1,5,2
"even(Even,[0,∞])",Chaotic.outer,1,1,3,4
"diverge5",Chaotic.outer,1,1,1,6
Function,Algorithm,Filtered,Stack Lookups,Cache Entries,Iteration,Cache Lookups,Cache Updates
"fib[5,10]",parallel,0,161,0,0,0,0
"fib[100,110]",parallel,0,24,1,2,17,3
"fib[1,∞]",parallel,0,28,2,2,22,6
"fact[5,10]",parallel,0,0,0,0,0,0
"fact[10,15]",parallel,0,14,1,2,6,3
"fact[0,∞]",parallel,0,6,1,1,4,2
"ackermann([0,3],[0,3])",parallel,0,3554,0,0,0,0
"ackermann([0,∞],[0,∞])",parallel,0,12,1,1,11,2
"even(Even,[0,∞])",parallel,0,13,2,2,9,6
"diverge5",parallel,0,10,1,1,4,2
"fib[5,10]",parallel-adi,0,0,16,1,38,32
"fib[100,110]",parallel-adi,0,0,2,2,12,6
"fib[1,∞]",parallel-adi,0,0,2,2,10,5
"fact[5,10]",parallel-adi,0,0,10,1,10,20
"fact[10,15]",parallel-adi,0,0,4,2,11,12
"fact[0,∞]",parallel-adi,0,0,2,1,4,4
"ackermann([0,3],[0,3])",parallel-adi,0,0,186,1,492,372
"ackermann([0,∞],[0,∞])",parallel-adi,0,0,1,1,6,2
"even(Even,[0,∞])",parallel-adi,0,0,2,2,7,6
"diverge5",parallel-adi,0,0,6,1,8,12
"fib[5,10]",innermost,0,161,0,0,0,0
"fib[100,110]",innermost,0,8,1,2,7,3
"fib[1,∞]",innermost,0,8,2,3,8,5
"fact[5,10]",innermost,0,0,0,0,0,0
"fact[10,15]",innermost,0,3,1,2,3,3
"fact[0,∞]",innermost,0,2,1,1,2,2
"ackermann([0,3],[0,3])",innermost,0,3554,0,0,0,0
"ackermann([0,∞],[0,∞])",innermost,0,5,1,1,5,2
"even(Even,[0,∞])",innermost,0,3,1,1,2,2
"diverge5",innermost,0,1,1,0,1,1
"fib[5,10]",outermost,0,161,0,0,0,0
"fib[100,110]",outermost,0,8,1,2,7,3
"fib[1,∞]",outermost,0,8,2,2,7,3
"fact[5,10]",outermost,0,0,0,0,0,0
"fact[10,15]",outermost,0,3,1,2,3,3
"fact[0,∞]",outermost,0,2,1,1,2,2
"ackermann([0,3],[0,3])",outermost,0,3554,0,0,0,0
"ackermann([0,∞],[0,∞])",outermost,0,5,1,1,5,2
"even(Even,[0,∞])",outermost,0,3,1,1,2,2
"diverge5",outermost,0,1,1,0,1,1
......@@ -13,7 +13,9 @@ import Control.Arrow.Fix
import Control.Arrow.Fail
import Control.Arrow.Closure (ArrowClosure)
import qualified Control.Arrow.Closure as Cls
import Control.Arrow.Environment (ArrowEnv,ArrowLetRec)
import Control.Arrow.Environment (ArrowEnv)
import Control.Arrow.LetRec(ArrowLetRec)
import qualified Control.Arrow.LetRec as LetRec
import qualified Control.Arrow.Environment as Env
import Data.Text (Text)
......@@ -49,7 +51,7 @@ eval = fix $ \ev -> proc e0 -> case e0 of
if_ ev ev -< (v1, (e2, e3))
Let bnds body _ -> do
vs <- map ev -< [ e | (_,e) <- bnds ]
Env.letRec ev -< ([ (v,cl) | ((v,_),cl) <- zip bnds vs ], body)
LetRec.letRec ev -< ([ (v,cl) | ((v,_),cl) <- zip bnds vs ], body)
Apply e _ -> ev -< e
where
-- Helper function used to apply closure or a suspended fixpoint computation to its argument.
......
This diff is collapsed.
......@@ -26,7 +26,7 @@ import Control.Arrow
import Control.Arrow.Fail
import Control.Arrow.Environment as Env
import Control.Arrow.Fix as Fix
import Control.Arrow.Fix.Chaotic(chaotic,iterateInner,iterateOuter)
import Control.Arrow.Fix.Chaotic(innermost,outermost)
import Control.Arrow.Fix.Parallel
import qualified Control.Arrow.Fix.Context as Ctx
import Control.Arrow.Trans
......@@ -41,7 +41,7 @@ import Control.Arrow.Transformer.Value
import Control.Arrow.Transformer.Abstract.FiniteEnvStore
import Control.Arrow.Transformer.Abstract.Error
import Control.Arrow.Transformer.Abstract.Fix
import Control.Arrow.Transformer.Abstract.Fix.Chaotic
import Control.Arrow.Transformer.Abstract.Fix.Component
import Control.Arrow.Transformer.Abstract.Fix.Context
import Control.Arrow.Transformer.Abstract.Fix.Stack
import Control.Arrow.Transformer.Abstract.Fix.Cache.Immutable(CacheT,Monotone)
......@@ -111,30 +111,30 @@ data ListT
| Coons Text Text
deriving (Eq, Generic)
evalIntervalChaotic :: (?sensitivity :: Int) => [(Text,Addr)] -> [State Label Expr] -> Out'
evalIntervalChaotic env0 e = run (extend' (Generic.run_ ::
Fix'
(ValueT Val
(ErrorT (Pow String)
(TerminatingT
(EnvStoreT Text Addr Val
(FixT _ _
(MetricsT In
(ChaoticT In
(StackT Stack In
(CacheT Monotone In Out
(ContextT Ctx
(->))))))))))) [Expr] Val))
W.finite
iterationStrategy
(W.finite, W.finite)
(Map.empty,(Map.empty,(env0,e0)))
where
e0 = generate (sequence e)
iterationStrategy =
Fix.traceShow .
Ctx.recordCallsite ?sensitivity (\(_,(_,exprs)) -> case exprs of [App _ _ l] -> Just l; _ -> Nothing) .
Fix.filter apply chaotic
-- evalIntervalChaotic :: (?sensitivity :: Int) => [(Text,Addr)] -> [State Label Expr] -> Out'
-- evalIntervalChaotic env0 e = run (extend' (Generic.run_ ::
-- Fix'
-- (ValueT Val
-- (ErrorT (Pow String)
-- (TerminatingT
-- (EnvStoreT Text Addr Val
-- (FixT _ _
-- (MetricsT In
-- (ComponentT In
-- (StackT Stack In
-- (CacheT Monotone In Out
-- (ContextT Ctx
-- (->))))))))))) [Expr] Val))
-- W.finite
-- iterationStrategy
-- (W.finite, W.finite)
-- (Map.empty,(Map.empty,(env0,e0)))
-- where
-- e0 = generate (sequence e)
-- iterationStrategy =
-- Fix.traceShow .
-- Ctx.recordCallsite ?sensitivity (\(_,(_,exprs)) -> case exprs of [App _ _ l] -> Just l; _ -> Nothing) .
-- Fix.filter apply chaotic
evalIntervalChaoticInner :: (?sensitivity :: Int) => [(Text,Addr)] -> [State Label Expr] -> Out'
evalIntervalChaoticInner env0 e = run (extend' (Generic.run_ ::
......@@ -145,7 +145,7 @@ evalIntervalChaoticInner env0 e = run (extend' (Generic.run_ ::
(EnvStoreT Text Addr Val
(FixT _ _
(MetricsT In
(ChaoticT In
(ComponentT In
(StackT Stack In
(CacheT Monotone In Out
(ContextT Ctx
......@@ -159,7 +159,7 @@ evalIntervalChaoticInner env0 e = run (extend' (Generic.run_ ::
iterationStrategy =
-- Fix.traceShow .
Ctx.recordCallsite ?sensitivity (\(_,(_,exprs)) -> case exprs of [App _ _ l] -> Just l; _ -> Nothing) .
Fix.filter apply iterateInner
Fix.filter apply innermost
evalIntervalChaoticOuter :: (?sensitivity :: Int) => [(Text,Addr)] -> [State Label Expr] -> Out'
evalIntervalChaoticOuter env0 e = run (extend' (Generic.run_ ::
......@@ -170,7 +170,7 @@ evalIntervalChaoticOuter env0 e = run (extend' (Generic.run_ ::
(EnvStoreT Text Addr Val
(FixT _ _
(MetricsT In
(ChaoticT In
(ComponentT In
(StackT Stack In
(CacheT Monotone In Out
(ContextT Ctx
......@@ -184,7 +184,7 @@ evalIntervalChaoticOuter env0 e = run (extend' (Generic.run_ ::
iterationStrategy =
-- Fix.traceShow .
Ctx.recordCallsite ?sensitivity (\(_,(_,exprs)) -> case exprs of [App _ _ l] -> Just l; _ -> Nothing) .
Fix.filter apply iterateOuter
Fix.filter apply outermost
evalIntervalParallel :: (?sensitivity :: Int) => [(Text,Addr)] -> [State Label Expr] -> Out'
evalIntervalParallel env0 e = run (extend' (Generic.run_ ::
......@@ -463,11 +463,11 @@ evalIntervalParallel' exprs = let (_,(metrics,res)) = evalIntervalParallel [] ex
-- {-# INLINE evalIntervalParallel' #-}
evalInterval' :: (?sensitivity :: Int) => [(Text,Addr)] -> [State Label Expr] -> Terminating (Error (Pow String) Val)
evalInterval' env exprs = snd $ snd $ snd $ evalIntervalChaotic env exprs
evalInterval' env exprs = snd $ snd $ snd $ evalIntervalChaoticInner env exprs
-- {-# INLINE evalInterval' #-}
evalIntervalChaotic' :: (?sensitivity :: Int) => [State Label Expr] -> (Metrics (Store, (([Expr], Label), Env)), (Terminating (Error (Pow String) Val)))
evalIntervalChaotic' exprs = let (_,(metrics,res)) = evalIntervalChaotic [] exprs in (metrics,snd $ res)
-- evalIntervalChaotic' :: (?sensitivity :: Int) => [State Label Expr] -> (Metrics (Store, (([Expr], Label), Env)), (Terminating (Error (Pow String) Val)))
-- evalIntervalChaotic' exprs = let (_,(metrics,res)) = evalIntervalChaotic [] exprs in (metrics,snd $ res)
-- {-# INLINE evalIntervalChaotic' #-}
-- UTILS
......
......@@ -116,49 +116,33 @@ sharedSpecFile run = do
-----------------GABRIEL BENCHMARKS---------------------------------------------
describe "Gabriel-Benchmarks" $ do
it "null" $ do
-- pendingWith "out of memory"
file_str <- helper_import "//scheme_files//gabriel//test.scm"
putStrLn file_str
it "boyer" $ do
pendingWith "out of memory"
file_str <- helper_import "//scheme_files//gabriel//boyer.scm"
case readExprList file_str of
Right a -> do
putStrLn $ show a
case match a of
Right a -> case match a of
Right b -> run [let_rec (getTopDefinesLam b) (getBody b)] `shouldBe` Right (BoolVal True)
Left b -> print b
Left a -> print $ showError a
it "boyer" $ do
-- pendingWith "out of memory"
file_str <- helper_import "//scheme_files//gabriel//boyer.scm"
putStrLn file_str
it "cpstak" $ do
pendingWith "out of memory"
file_str <- helper_import "//scheme_files//gabriel//cpstak.scm"
case readExprList file_str of
Right a -> do
putStrLn $ show a
Right a ->
case match a of
Right b -> run [let_rec (getTopDefinesLam b) (getBody b)] `shouldBe` Right (BoolVal True)
Right b -> run [let_rec (getTopDefinesLam b) (getBody b)] `shouldBe` Right (NumVal 6)
Left b -> print b
Left a -> print $ showError a
-- it "cpstak" $ do
-- pendingWith "out of memory"
-- file_str <- helper_import "//scheme_files//gabriel//cpstak.scm"
-- case readExprList file_str of
-- Right a ->
-- case match a of
-- Right b -> run [let_rec (getTopDefinesLam b) (getBody b)] `shouldBe` Right (NumVal 6)
-- Left b -> print b
-- Left a -> print $ showError a
-- it "deriv" $ do
-- file_str <- helper_import "//scheme_files//gabriel//deriv.scm"
-- putStrLn file_str
-- case readExprList file_str of
-- Right a ->
-- case match a of
-- Right b -> run [let_rec (getTopDefinesLam b) (getBody b)] `shouldBe` Right (BoolVal True)
-- Left b -> print b
-- Left a -> print $ showError a
it "deriv" $ do
file_str <- helper_import "//scheme_files//gabriel//deriv.scm"
case readExprList file_str of
Right a ->
case match a of
Right b -> run [let_rec (getTopDefinesLam b) (getBody b)] `shouldBe` Right (BoolVal True)
Left b -> print b
Left a -> print $ showError a
it "diviter" $ do
file_str <- helper_import "//scheme_files//gabriel//diviter.scm"
......@@ -243,98 +227,98 @@ sharedSpecFile run = do
-- Left a -> print $ showError a
------------------------------------------CUSTOMS--------------------------------------------
-- describe "Custom_Tests" $ do
-- -- let ?bound = 100
-- -- let ?sensitivity = 0
-- it "recursion and union with empty list" $ do
-- let inFile = "test_rec_empty"
-- let expRes = Right EmptyList
-- helper_test run inFile expRes
-- it "recursion and union with non-empty list" $ do
-- let inFile = "test_rec_nonempty"
-- let expRes = Right $ NumVal 1
-- helper_test run inFile expRes
-- it "should return 3 for (car (cdr '(2 3 4)))" $ do
-- let inFile = "test_cdr"
-- let expRes = Right $ NumVal 3
-- helper_test run inFile expRes
-- it "should return correct val for car" $ do
-- let inFile = "test_car"
-- let expRes = Right $ NumVal 1
-- helper_test run inFile expRes
-- it "should return true for null? cdr cdr '(1 2)" $ do
-- let inFile = "test_null"
-- let expRes = Right $ BoolVal True
-- helper_test run inFile expRes
-- -- it "unifying two list of nums of different size should result in an error" $ do
-- -- let inFile = "test_faulty_list"
-- -- let expRes = Terminating (Fail "{\"cannot unify lists of differing lengths| List [Int: {1}], List [Int: {1},Int: {2}]\"}")
-- -- helper_test inFile expRes
-- it "test_if" $ do
-- let inFile = "test_if"
-- let expRes = Right $ BoolVal False
-- helper_test run inFile expRes
-- it "test_opvars" $ do
-- let inFile = "test_opvars"
-- let expRes = Right $ NumVal 10
-- helper_test run inFile expRes
-- it "test_equal" $ do
-- let inFile = "test_equal"
-- let expRes = Right $ BoolVal True
-- helper_test run inFile expRes
-- it "test_cons" $ do
-- let inFile = "test_cons"
-- let expRes = Right $ BoolVal True
-- helper_test run inFile expRes
-- it "test_closures_gc" $ do
-- let inFile = "test_closure_gc"
-- let expRes = Right $ NumVal 16
-- helper_test run inFile expRes
-- it "lang_scheme_test" $ do
-- let inFile = "lang_scheme_test"
-- let expRes = Right $ NumVal 8
-- helper_test run inFile expRes
-- it "test_inner_define" $ do
-- let inFile = "test_inner_define"
-- let expRes = Right $ NumVal 10
-- helper_test run inFile expRes
-- it "test_subtraction" $ do
-- let inFile = "test_subtraction"
-- let expRes = Right $ NumVal (-4)
-- helper_test run inFile expRes
-- it "test_lits" $ do
-- let inFile = "test_lits"
-- let expRes = Right $ NumVal 3
-- helper_test run inFile expRes
-- it "test_simple_floats" $ do
-- let inFile = "test_simple_floats"
-- let expRes = Right $ BoolVal False
-- helper_test run inFile expRes
-- it "test_rec_defines" $ do
-- let inFile = "test_rec_defines"
-- let expRes = Right $ NumVal 720
-- helper_test run inFile expRes
describe "Custom_Tests" $ do
-- let ?bound = 100
-- let ?sensitivity = 0
it "recursion and union with empty list" $ do
let inFile = "test_rec_empty"
let expRes = Right EmptyList
helper_test run inFile expRes
it "recursion and union with non-empty list" $ do
let inFile = "test_rec_nonempty"
let expRes = Right $ NumVal 1
helper_test run inFile expRes
it "should return 3 for (car (cdr '(2 3 4)))" $ do
let inFile = "test_cdr"
let expRes = Right $ NumVal 3
helper_test run inFile expRes
it "should return correct val for car" $ do
let inFile = "test_car"
let expRes = Right $ NumVal 1
helper_test run inFile expRes
it "should return true for null? cdr cdr '(1 2)" $ do
let inFile = "test_null"
let expRes = Right $ BoolVal True
helper_test run inFile expRes
-- it "unifying two list of nums of different size should result in an error" $ do
-- let inFile = "test_faulty_list"
-- let expRes = Terminating (Fail "{\"cannot unify lists of differing lengths| List [Int: {1}], List [Int: {1},Int: {2}]\"}")
-- helper_test inFile expRes
it "test_if" $ do
let inFile = "test_if"
let expRes = Right $ BoolVal False
helper_test run inFile expRes
it "test_opvars" $ do
let inFile = "test_opvars"
let expRes = Right $ NumVal 10
helper_test run inFile expRes
it "test_equal" $ do
let inFile = "test_equal"
let expRes = Right $ BoolVal True
helper_test run inFile expRes
it "test_cons" $ do
let inFile = "test_cons"
let expRes = Right $ BoolVal True
helper_test run inFile expRes
it "test_closures_gc" $ do
let inFile = "test_closure_gc"
let expRes = Right $ NumVal 16
helper_test run inFile expRes
it "lang_scheme_test" $ do
let inFile = "lang_scheme_test"
let expRes = Right $ NumVal 8
helper_test run inFile expRes
it "test_inner_define" $ do
let inFile = "test_inner_define"
let expRes = Right $ NumVal 10
helper_test run inFile expRes
it "test_subtraction" $ do
let inFile = "test_subtraction"
let expRes = Right $ NumVal (-4)
helper_test run inFile expRes
it "test_lits" $ do
let inFile = "test_lits"
let expRes = Right $ NumVal 3
helper_test run inFile expRes
it "test_simple_floats" $ do
let inFile = "test_simple_floats"
let expRes = Right $ BoolVal False
helper_test run inFile expRes
it "test_rec_defines" $ do
let inFile = "test_rec_defines"
let expRes = Right $ NumVal 720
helper_test run inFile expRes
-- it "test_random" $ do
-- let inFile = "test_random"
-- let expRes = Right $ NumVal 1
-- helper_test run inFile expRes
-- it "test_random" $ do
-- let inFile = "test_random"
-- let expRes = Right $ NumVal 1
-- helper_test run inFile expRes
......
......@@ -102,20 +102,21 @@ spec = do
it "cpstak" $ do
-- => Final Values: Set(Int)
-- => TIME: 105 | STATES: 120
-- pendingWith "out of memory"
let inFile = "gabriel//cpstak"
let expRes = Terminating (Success $ singleton IntVal)
helperTest inFile expRes
it "dderiv" $ do
-- pendingWith "out of memory"
pendingWith "out of memory"
let inFile = "gabriel//dderiv"
let expRes = Terminating (Success $ singleton $ BoolVal B.True)
helperTest inFile expRes
it "deriv" $ do
-- => TIMEOUT | STATES: 1645737
-- pendingWith "out of memory"
pendingWith "out of memory"
-- most likely wrong ?
let inFile = "gabriel//deriv"
let expRes = Terminating (Success $ singleton Bottom)
......@@ -172,15 +173,15 @@ spec = do
it "primtest" $ do
-- => Final Values: Set(Int)
-- => TIME: 8 | STATES: 431
pendingWith "not getting parsed yet"
let inFile = "scala-am//primtest"
let expRes = Terminating (Success $ singleton IntVal)
let ?sensitivity = 0
helperTestChaotic inFile expRes
helperTest inFile expRes
it "rsa" $ do
-- => Final Values: Set({#f,#t})
-- => TIME: 2831 | STATES: 247915
pendingWith "!!!!!!!! some variable not bound !!!!!!!"
pendingWith "only works for parallel, but parallel broken?"
let inFile = "scala-am//rsa"
let expRes = Terminating (Fail $ Pow.singleton "Expected elements of type num for op| [List [Num],Num]" <> "Scheme-Error")
helperTest inFile expRes
......@@ -296,39 +297,37 @@ spec = do
it "test_random" $ do
-- pending
let ?sensitivity = 0
let inFile = "test_random"
let expRes = Terminating (Success $ singleton $ IntVal)
helperTestChaotic inFile expRes
helperTestChaoticInner inFile expRes
-------------------HELPER------------------------------------------------------
helperTest :: String -> Terminating (Error (Pow String) Val) -> IO ()
helperTest inFile expRes = do
let ?sensitivity = 0
helperTestChaotic inFile expRes
-- helperTestChaotic inFile expRes
helperTestChaoticInner inFile expRes
helperTestChaoticOuter inFile expRes
helperTestParallel inFile expRes
-- helperTestParallel inFile expRes
metricFile :: String
metricFile = "TypedAnalysis.csv"
helperTestChaotic :: (?sensitivity :: Int) => String -> Terminating (Error (Pow String) Val) -> IO ()
helperTestChaotic inFile expRes = do
file_str <- helper_import inFile
-- print file_str
case readExprList file_str of
Right a -> do
-- print a
case match a of
Right b -> do
let (metric, res) = evalIntervalChaotic' [let_rec (getTopDefinesLam b) (getBody b)]
let csv = printf "\"%s\",chaotic simple,%s\n" inFile (toCSV metric)
appendFile metricFile csv
res`shouldBe` expRes
Left b -> print b
Left a -> print $ showError a
-- helperTestChaotic :: (?sensitivity :: Int) => String -> Terminating (Error (Pow String) Val) -> IO ()
-- helperTestChaotic inFile expRes = do
-- file_str <- helper_import inFile
-- -- print file_str
-- case readExprList file_str of
-- Right a -> do
-- -- print a
-- case match a of
-- Right b -> do
-- let (metric, res) = evalIntervalChaotic' [let_rec (getTopDefinesLam b) (getBody b)]
-- let csv = printf "\"%s\",chaotic simple,%s\n" inFile (toCSV metric)
-- appendFile metricFile csv
-- res`shouldBe` expRes
-- Left b -> print b
-- Left a -> print $ showError a
helperTestChaoticInner :: String -> Terminating (Error (Pow String) Val) -> IO ()
helperTestChaoticInner inFile expRes = do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment