summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErin van der Veen2018-07-05 19:44:12 +0200
committerErin van der Veen2018-07-05 19:44:12 +0200
commitf946712b836a72221756f67840e8d815706e09c2 (patch)
tree480dd9934960c5d8fb052f6d5682172f625cd086
parentAdd + var to every transition (diff)
Uniqueness :(
-rw-r--r--Assignment2/src/DTMC.icl20
1 files changed, 11 insertions, 9 deletions
diff --git a/Assignment2/src/DTMC.icl b/Assignment2/src/DTMC.icl
index d3071c1..3abb0ac 100644
--- a/Assignment2/src/DTMC.icl
+++ b/Assignment2/src/DTMC.icl
@@ -168,15 +168,17 @@ addVars :: *DTMC -> *DTMC
addVars dtmc = {DTMC | nr_states = dtmc.nr_states, states = addVarsS 0 dtmc.nr_states dtmc.states}
where
addVarsS :: !Int !Int !*{Maybe State} -> *{Maybe State}
- addVarsS i m ss
- | i >= m = ss
- | otherwise = addVarsS (i + 1) m {ss & [i]=addVarsT 0 m ss.[i]}
-
- addVarsT :: Int Int (Maybe State) -> (Maybe State)
- addVarsT _ _ Nothing = Nothing
- addVarsT i m (Just s)
- | i >= m = Just s
- | otherwise = (addVarsT (i + 1) m (Just {s & transitions = alter (addVar i s.state_id) i s.transitions}))
+ addVarsS fi m ss
+ | fi >= m = ss
+ | otherwise = addVarsS (fi + 1) m (addVarsT fi 0 m ss)
+
+ addVarsT :: !Int !Int !Int !*{Maybe State} -> *{Maybe State}
+ addVarsT fi ti m ss
+ | ti >= m = ss
+ # (s, ss) = ss![fi]
+ = case s of
+ Nothing -> ss
+ (Just s) -> addVarsT fi (ti + 1) m {ss & [fi] = Just {s & transitions = alter (addVar fi ti) fi s.transitions}}
addVar :: Int Int (Maybe String) -> Maybe String
addVar _ _ Nothing = Nothing