diff options
Diffstat (limited to 'Assignment2')
-rw-r--r-- | Assignment2/src/DTMC.icl | 20 |
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 |