From a6f85b9b8894a7817baad1a5e850366d02eb197a Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 13 Jan 2016 18:18:06 +0100 Subject: FFP 11.1 --- ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs | 85 +++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs (limited to 'ws2015/ffp/blaetter/11/FFP_U11-2_Yesod.hs') 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 @@ +-- Fortgeschrittene Funktionale Programmierung, +-- LMU, TCS, Wintersemester 2015/16 +-- Steffen Jost, Alexander Isenko +-- +-- Übungsblatt 11. 13.01.2016 +-- +-- Teilaufgabe +-- A11-2 Yesod Grundlagen (Routing & Handling) +-- + +{-# LANGUAGE ViewPatterns #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE TemplateHaskell, QuasiQuotes #-} + +module Main where + +import Yesod +import qualified Data.Text as T + +{- + Ausgehend von dem minimalen Yesod Beispielen auf Folie 09-12, + erstellen Sie eine kleine Webseite mit Yesod, welche Integer-Zahlen + addieren und multiplizieren kann. + Zur Übung der Grundlagen des Routings möchten wir dies + unsinnigerweise über die URL-Pfade der Webseite machen: + + * http://localhost:3000/24/plus/373/ist + zeigt eine Seite an, welche die Zahl 397 anzeigt. + + * http://localhost:3000/5/mal/-13/ist + zeigt eine Seite an, welche die Zahl -65 anzeigt. + + * http://localhost:3000/5/plus/-1foo3/ist + zeigt eine Hilfseite an, welche darauf hinweist, dass nur ganze Zahlen erlaubt sind. + + * jeder unsinniger Pfad wie etwa + http://localhost:3000/5/foo/-13/ist + zeigt eine Hilfseite an, die sagt welche Rechenoperationen erlaubt sind. + + + Hinweis: Yesod verwendet Data.Text, ein effizienter Ersatz für den ineffizienten Typ String. + Modul Data.Text stellt Methoden zur Bearbeitung von Werte dieses Typs bereit, hier eine Auswahl davon: + pack :: String -> Text + unpack :: Text -> String + append :: Text -> Text -> Text + strip :: Text -> Text + null :: Text -> Bool + length :: Text -> Int +-} + + +{- LÖSUNGSVORSCHLAG -} + +main :: IO () +main = warp 3000 CalcApp + +data CalcApp = CalcApp + +instance Yesod CalcApp + +mkYesod "CalcApp" [parseRoutes| + / HomeR GET +|] + + +getHomeR :: Handler Html +getHomeR = defaultLayout $ do + setTitle "Hello!" + let x = 2 + let y = 3 + toWidget [whamlet| +

Hello World! +

Some text that is displayed here. +

We have #{show x}+#{show y}=#{show $ x + y}! + |] + + + + + +-- +-- Weiter geht es mit der Datei FFP_U11-3_Yesod.hs +-- -- cgit v1.2.3