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

79 lines
2.1 KiB
Haskell

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