79 lines
2.1 KiB
Haskell
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
|
|
|