diff options
Diffstat (limited to 'ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs')
-rw-r--r-- | ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs b/ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs new file mode 100644 index 0000000..83f7945 --- /dev/null +++ b/ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs | |||
@@ -0,0 +1,85 @@ | |||
1 | -- Fortgeschrittene Funktionale Programmierung, | ||
2 | -- LMU, TCS, Wintersemester 2015/16 | ||
3 | -- Steffen Jost, Alexander Isenko | ||
4 | -- | ||
5 | -- Übungsblatt 11. 13.01.2016 | ||
6 | -- | ||
7 | -- Teilaufgabe | ||
8 | -- A11-2 Yesod Grundlagen (Routing & Handling) | ||
9 | -- | ||
10 | |||
11 | {-# LANGUAGE ViewPatterns #-} | ||
12 | {-# LANGUAGE MultiParamTypeClasses #-} | ||
13 | {-# LANGUAGE OverloadedStrings #-} | ||
14 | {-# LANGUAGE TypeFamilies #-} | ||
15 | {-# LANGUAGE TemplateHaskell, QuasiQuotes #-} | ||
16 | |||
17 | module Main where | ||
18 | |||
19 | import Yesod | ||
20 | import qualified Data.Text as T | ||
21 | |||
22 | {- | ||
23 | Ausgehend von dem minimalen Yesod Beispielen auf Folie 09-12, | ||
24 | erstellen Sie eine kleine Webseite mit Yesod, welche Integer-Zahlen | ||
25 | addieren und multiplizieren kann. | ||
26 | Zur Übung der Grundlagen des Routings möchten wir dies | ||
27 | unsinnigerweise über die URL-Pfade der Webseite machen: | ||
28 | |||
29 | * http://localhost:3000/24/plus/373/ist | ||
30 | zeigt eine Seite an, welche die Zahl 397 anzeigt. | ||
31 | |||
32 | * http://localhost:3000/5/mal/-13/ist | ||
33 | zeigt eine Seite an, welche die Zahl -65 anzeigt. | ||
34 | |||
35 | * http://localhost:3000/5/plus/-1foo3/ist | ||
36 | zeigt eine Hilfseite an, welche darauf hinweist, dass nur ganze Zahlen erlaubt sind. | ||
37 | |||
38 | * jeder unsinniger Pfad wie etwa | ||
39 | http://localhost:3000/5/foo/-13/ist | ||
40 | zeigt eine Hilfseite an, die sagt welche Rechenoperationen erlaubt sind. | ||
41 | |||
42 | |||
43 | Hinweis: Yesod verwendet Data.Text, ein effizienter Ersatz für den ineffizienten Typ String. | ||
44 | Modul Data.Text stellt Methoden zur Bearbeitung von Werte dieses Typs bereit, hier eine Auswahl davon: | ||
45 | pack :: String -> Text | ||
46 | unpack :: Text -> String | ||
47 | append :: Text -> Text -> Text | ||
48 | strip :: Text -> Text | ||
49 | null :: Text -> Bool | ||
50 | length :: Text -> Int | ||
51 | -} | ||
52 | |||
53 | |||
54 | {- LÖSUNGSVORSCHLAG -} | ||
55 | |||
56 | main :: IO () | ||
57 | main = warp 3000 CalcApp | ||
58 | |||
59 | data CalcApp = CalcApp | ||
60 | |||
61 | instance Yesod CalcApp | ||
62 | |||
63 | mkYesod "CalcApp" [parseRoutes| | ||
64 | / HomeR GET | ||
65 | |] | ||
66 | |||
67 | |||
68 | getHomeR :: Handler Html | ||
69 | getHomeR = defaultLayout $ do | ||
70 | setTitle "Hello!" | ||
71 | let x = 2 | ||
72 | let y = 3 | ||
73 | toWidget [whamlet| | ||
74 | <h2>Hello World! | ||
75 | <p> Some text that is <i>displayed</i> here. | ||
76 | <p> We have #{show x}+#{show y}=#{show $ x + y}! | ||
77 | |] | ||
78 | |||
79 | |||
80 | |||
81 | |||
82 | |||
83 | -- | ||
84 | -- Weiter geht es mit der Datei FFP_U11-3_Yesod.hs | ||
85 | -- | ||