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