uebung2017_2/src/Aufgabe1.hs
Yannick Gottschalk 22717263bb Revert "Added Aufgabe 4"
This reverts commit aab564e716.
2017-04-30 23:45:31 +02:00

83 lines
1.9 KiB
Haskell
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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)