This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- is there a GHC language extension that would | |
-- let me break up function definitions like this: | |
f1 some_pattern = expression1 | |
f2 some_other_pattern = expression2 | |
f1 yet_another_pattern = expression3 | |
f2 another_pattern = expression4 | |
--instead of having to group them together like this: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
get ["echo", word] | |
| length word == 4 = body "4 letter word" >> status 403 | |
| otherwise = body word |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell #-} | |
import Yesod | |
data Echo = Echo | |
mkYesod "Echo" [$parseRoutes| | |
/echo/#String EchoR GET | |
|] | |
instance Yesod Echo where approot _ = "" | |
getEchoR s | |
| length s == 4 = permissionDenied "Forbidden: 4 letter word" | |
| otherwise = return $ RepPlain $ toContent s |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import qualified Data.ByteString as B | |
main :: IO () | |
main = do | |
td <- newTemplateDirectory' "templates" emptyTemplateState | |
quickServer $ templateHandler td defaultReloadHandler $ \ts -> | |
route [ ("echo/:s", echoHandler) | |
] <|> | |
templateServe ts <|> | |
dir "static" (fileServe ".") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
infixl 9 ==> | |
f ==> g = g $ f | |
lee = Author "Gentry Lee" | |
clarke = Author "Arthur C. Clarke" | |
heinlein= Author "Robert Heinlein" | |
rama = Book "Garden of Rama" | |
catalog = | |
Catalog Map.empty Map.empty ==> | |
associate lee rama ==> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Library | |
(Author, | |
Book, | |
AuthorIndex, | |
BookIndex, | |
Catalogued, | |
Catalog, | |
addAuthor, | |
addBook, | |
associate, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fac n = [1..] ==> take n ==> foldr (*) 1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
infixl 9 ==> | |
f ==> g = g $ f |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fac n = foldr (*) 1 $ take n $ [1..] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
clarke = createAuthor "Arthur C. Clarke" ["Garden of Rama"] | |
lee = createAuthor "Gentry Lee" ["Garden of Rama"] | |
gardenAuthorsAccordingToClarke = map name $ authors $ head $ books clarke | |
-- ["Arthur C. Clarke"] | |
gardenAuthorsAccordingToLee = map name $ authors $ head $ books lee | |
-- ["Gentry Lee"] |