Advertisement
Patasuss

Aufgabe 3.1

Nov 2nd, 2015
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1.  
  2. type N = Char
  3.  
  4. type V = Integer
  5.  
  6. data Definitions = NoDefinitions
  7. | Definitions N V Definitions
  8. deriving Show
  9.  
  10. find :: N -> Definitions -> V
  11. find name NoDefinitions = error "Variable not found in List!"
  12. find name (Definitions dname dvar def) = if name==dname
  13. then dvar
  14. else find name def
  15.  
  16. contains :: N -> Definitions -> Bool
  17. contains name NoDefinitions = False
  18. contains name (Definitions dname dvar def) = if name==dname
  19. then True
  20. else contains name def
  21.  
  22. addDefinition :: N -> V -> Definitions -> Definitions
  23. addDefinition name var toReplacIn = replaceDef NoDefinitions name var toReplacIn
  24.  
  25. addToList :: Definitions -> Definitions -> Definitions
  26. addToList NoDefinitions def = def
  27. addToList (Definitions n m NoDefinitions) toAdd = Definitions n m toAdd
  28. addToList (Definitions n m def) toAdd = Definitions n m (addToList def toAdd)
  29.  
  30. replaceDef :: Definitions -> N -> V -> Definitions -> Definitions
  31. replaceDef preDef name var (Definitions postName postVar NoDefinitions) = if name==postName
  32. then addToList preDef (Definitions name var NoDefinitions)
  33. else addToList preDef (Definitions postName postVar (Definitions name var NoDefinitions))
  34. replaceDef preDef name var (Definitions postName postVar postDef) = if name==postName
  35. then addToList (addToList preDef (Definitions name var NoDefinitions)) postDef
  36. else replaceDef (addToList preDef (Definitions postName postVar NoDefinitions)) name var postDef
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement