summaryrefslogtreecommitdiff
path: root/ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs
diff options
context:
space:
mode:
Diffstat (limited to 'ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs')
-rw-r--r--ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs85
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
17module Main where
18
19import Yesod
20import 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
56main :: IO ()
57main = warp 3000 CalcApp
58
59data CalcApp = CalcApp
60
61instance Yesod CalcApp
62
63mkYesod "CalcApp" [parseRoutes|
64 / HomeR GET
65|]
66
67
68getHomeR :: Handler Html
69getHomeR = 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--