Skip to content

Instantly share code, notes, and snippets.

@snoyberg
Created October 11, 2012 07:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save snoyberg/3870834 to your computer and use it in GitHub Desktop.
Save snoyberg/3870834 to your computer and use it in GitHub Desktop.
Demonstrate conversion from standard Yesod to yesod-pure
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Yesod
data App = App
mkYesod "App" [parseRoutes|
/ HomeR GET
/fib/#Int FibR GET
|]
instance Yesod App
getHomeR :: Handler RepHtml
getHomeR = defaultLayout $ do
setTitle "Hello World!"
toWidget [whamlet|
<p>Hello World
<a href=@{FibR 5}>Fifth fib
|]
toWidget [lucius|p { color: red }|]
getFibR :: Int -> Handler RepHtml
getFibR i = defaultLayout $ do
setTitle "Fibs"
[whamlet|
<p>Fib for #{i}: #{fib i}
<a href=@{FibR $ i + 1}>Next fib
|]
fib :: Int -> Int
fib i = fibs !! i
fibs :: [Int]
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
main :: IO ()
main = warpDebug 3000 App
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment