Skip to content
Snippets Groups Projects
Aufgabe1.md 1.96 KiB

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 PhoneBooks in eines zusammenführt.

instance Monoid PhoneBook where 
  mempty  = undefined
  mappend pb1 pb2 = 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 n nr pb = 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 n pb = undefined

Implementieren Sie eine Funktion findInMult, welche alle Einträge aus einer Liste von PhoneBooks 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)