uebung2017_3/src/Aufgabe2.lhs
2017-05-08 11:16:38 +02:00

79 lines
2.1 KiB
Plaintext

Aufgabe 2
=========
> module Aufgabe2 where
In der Vorlesung haben sie bereits einige Monaden kennengelernt. In dieser
Aufgabe sollen Sie das gelernte im praktischen Einsatz kennen lernen.
Bei dieser Aufgabe geht es um das Arbeiten mit einem 'Blog-System', in dem
`User`, `Post`s und `Comment`s gespeichert sind. All dies ist bereits
vorgegeben im Modul `BlogSys`. Für Sie relevant werden maximal folgende
Informationen zu diesem System sein:
type Title = String
type Content = String
getUser :: Int -> Maybe User
getPosts :: User -> [Post]
getPostTitle :: Post -> Maybe Title
getPostContent :: Post -> Content
getComments :: Post -> [Comment]
getCommentTitle :: Comment -> Maybe Title
getCommentContent :: Comment -> Content
> import BlogSys
Schreiben Sie nun die neue Funktion `headMay`, welche /eigentlich/ in der Prelude
sein sollte.
> headMay :: [a] -> Maybe a
>
> headMay = undefined
Schreiben Sie nun eine Funktion, die den ersten Buchstaben des Titels des
Kommentares des ersten Posts des Users mit der gegebenen id zurückgibt,
falls dieser existiert
> getFirstLetterOfFirstCommentForFirstPostOfUserWithId = gflofcffpouwi
> gflofcffpouwi :: Int -> Maybe Char
> gflofcffpouwi = undefined
Wenn man sich nun nicht immer nur den ersten Eintrag zurückgeben lassen möchte,
empfiehlt es sich, eine Funktion `atMay` zu definieren.
> atMay :: [a] -> Int -> Maybe a
>
> atMay = undefined
Schreiben Sie nun die Funktionen `getNthPost` und `getNthComment`.
> getNthPost :: Int -> User -> Maybe Post
>
> getNthPost = undefined
> getNthComment :: Int -> Post -> Maybe Comment
>
> getNthComment = undefined
Schreiben Sie nun die Funktion:
> getNthLetterOfContentOfNthCommentOfNthPostOfUserWithId = what
>
> what :: Int -> Int -> Int -> Int -> Maybe Char
>
> what = undefined
> result = foldl foldLogic [] [ what 2 0 1 128, gflofcffpouwi 2, what 1 1 0 20
> , what 1 0 2 29, what 2 0 0 128, what 1 1 0 1063
> , what 2 0 0 188, what 2 1 2 194, what 1 0 4 94 ]
>
> foldLogic a (Just c) = a ++ [c]
> foldLogic a _ = a