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

73 lines
1.9 KiB
Plaintext
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)