-- 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 getFirstLetterOfFirstCommenttitleForFirstPostOfUserWithId = 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