Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type N = Char
- type V = Integer
- data Definitions = NoDefinitions
- | Definitions N V Definitions
- deriving Show
- find :: N -> Definitions -> V
- find name NoDefinitions = error "Variable not found in List!"
- find name (Definitions dname dvar def) = if name==dname
- then dvar
- else find name def
- contains :: N -> Definitions -> Bool
- contains name NoDefinitions = False
- contains name (Definitions dname dvar def) = if name==dname
- then True
- else contains name def
- addDefinition :: N -> V -> Definitions -> Definitions
- addDefinition name var toReplacIn = replaceDef NoDefinitions name var toReplacIn
- addToList :: Definitions -> Definitions -> Definitions
- addToList NoDefinitions def = def
- addToList (Definitions n m NoDefinitions) toAdd = Definitions n m toAdd
- addToList (Definitions n m def) toAdd = Definitions n m (addToList def toAdd)
- replaceDef :: Definitions -> N -> V -> Definitions -> Definitions
- replaceDef preDef name var (Definitions postName postVar NoDefinitions) = if name==postName
- then addToList preDef (Definitions name var NoDefinitions)
- else addToList preDef (Definitions postName postVar (Definitions name var NoDefinitions))
- replaceDef preDef name var (Definitions postName postVar postDef) = if name==postName
- then addToList (addToList preDef (Definitions name var NoDefinitions)) postDef
- else replaceDef (addToList preDef (Definitions postName postVar NoDefinitions)) name var postDef
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement