Skip to content
Snippets Groups Projects
Aufgabe1.hs 1.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • -- Aufgabe 1
    -- =========
    
    module Aufgabe1 where
    
    -- Functional phone book – Implementieren Sie ein Telefonbuch als Funktion.
    
    type Number = String
    type Name = String
    type Entry = [Number]
    newtype PhoneBook = PB (Name -> Entry)
    
    
    -- Implementieren Sie die Funktion `usePB`, welche aus einem `PhoneBook`
    -- mit einem `Name` den zugehörigen `Entry` findet`
    
    
    usePB :: PhoneBook -> Name -> Entry
    usePB = undefined
    
    
    
    -- Implementieren Sie eine `Monoid` Instanz für `PhoneBook`, um zu garantieren, 
    -- dass `PhoneBook` ein leeres Element hat und eine Verkettungsfunktion, die 
    -- zwei `PhoneBook`s in eines zusammenführt. 
    
    
    instance Monoid PhoneBook where 
      mempty = undefined
      mappend = undefined
    
    
    
    -- Implementieren Sie eine Funktion `addEntry`, welche einem `PhoneBook` eine
    -- `Name` zu `Number` Verknüpfung hinzufügt, also für einen gegebenen Namen und
    -- eine Nummer einen Eintrag im Telefonbuch erstellt.
    
    
    addEntry :: Name -> Number -> PhoneBook -> PhoneBook 
    addEntry = undefined
    
    
    
    -- Implementieren Sie eine Funktion `delEntry`, die alle Nummern aus dem `PhoneBook` 
    -- entfernt, die mit dem gegebenen `Name` assoziiert sind. 
    -- Hinweis: "Entfernt" heißt streng genommen nur, dass die Nummern nicht mehr aus
    -- dem resultierenden Telefonbuch herausgesucht werden können
    
    
    delEntry :: Name -> PhoneBook -> PhoneBook
    delEntry = undefined
    
    
    -- Implementieren Sie eine Funktion `findInMult`, welche alle Einträge aus einer
    -- Liste von `PhoneBook`s sucht
    
    
    findInMult :: [PhoneBook] -> Name -> Entry 
    findInMult = undefined
    
    
    result = "Wie war noch mal die Nummer von diesem Alonzo Church? Vielleicht kann der mir weiterhelfen.. \n"  
          ++ (show $ findInMult [pb2,pb3] "Alonzo Church") ++ "\n"  
      where pb1 = addEntry "Alonzo Church" "(0123) 73645362" mempty  
            pb2 = delEntry "Alonzo Church" pb1  
            pb3 = addEntry "Haskell Brooks Curry" "(0167) 987761262" (mappend pb1 pb2)