Skip to content
Snippets Groups Projects
state.hs 760 B
Newer Older
  • Learn to ignore specific revisions
  • Nicole Dresselhaus's avatar
    Nicole Dresselhaus committed
    module Main where
    
    {- Hier eine Passende Definition der State-Monade einfügen...  -}
    {- z.B. Control.Monad.Trans.State aus dem transformers-package -}
    {- oder Control.Monad.State aus dem veralteten mtl-package     -}
    
    type CountState = (Bool, Int)
     
    startState :: CountState
    startState = (False, 0)
    
    play :: String -> State CountState Int
    play []     = do
                  (_, score) <- get
                  return score
    play (x:xs) = do
     (on, score) <- get
     case x of
       'C' -> if on then put (on, score + 1) else put (on, score)
       'A' -> if on then put (on, score - 1) else put (on, score)
       'T' -> put (False, score)
       'G' -> put (True, score)
       _   -> put (on, score)
     play xs
    
    main = print $ runState (play "GACAACTCGAAT") startState
    -- -> (-3,(False,-3))