Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save kylecorbelli/c022dd63ac07f85eddbcdf472899d2c3 to your computer and use it in GitHub Desktop.

Select an option

Save kylecorbelli/c022dd63ac07f85eddbcdf472899d2c3 to your computer and use it in GitHub Desktop.

Revisions

  1. kylecorbelli revised this gist Jul 30, 2018. 1 changed file with 10 additions and 10 deletions.
    20 changes: 10 additions & 10 deletions haskell-simple-webpage-reader-monad-do-notation.hs
    Original file line number Diff line number Diff line change
    @@ -6,17 +6,17 @@ main = do

    view :: Reader Email Html
    view = do
    page_ <- page
    page' <- page
    return $ div
    [ page_
    [ page'
    ]

    page :: Reader Email Html
    page = do
    content_ <- content
    content' <- content
    return $ div
    [ topNav
    , content_
    , content'
    ]

    topNav :: Html
    @@ -28,11 +28,11 @@ topNav =
    content :: Reader Email Html
    content = do
    email <- ask
    right_ <- right
    right' <- right
    return $ div
    [ h1 [ "Custom Content for " ++ email ]
    , left
    , right_
    , right'
    ]

    left :: Html
    @@ -43,17 +43,17 @@ left =

    right :: Reader Email Html
    right = do
    article_ <- article
    article' <- article
    return $ div
    [ article_
    [ article'
    ]

    article :: Reader Email Html
    article = do
    widget_ <- widget
    widget' <- widget
    return $ div
    [ p [ "this is an article" ]
    , widget_
    , widget'
    ]

    widget :: Reader Email Html
  2. kylecorbelli revised this gist Jul 1, 2018. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions haskell-simple-webpage-reader-monad-do-notation.hs
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,8 @@
    main :: IO ()
    main =
    putStrLn "what is your email address?" >>
    getLine >>= \email ->
    putStrLn . show $ runReader view email
    main = do
    putStrLn "what is your email address?"
    email <- getLine
    putStrLn . show $ runReader view email

    view :: Reader Email Html
    view = do
  3. kylecorbelli revised this gist Jul 1, 2018. 1 changed file with 6 additions and 0 deletions.
    6 changes: 6 additions & 0 deletions haskell-simple-webpage-reader-monad-do-notation.hs
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,9 @@
    main :: IO ()
    main =
    putStrLn "what is your email address?" >>
    getLine >>= \email ->
    putStrLn . show $ runReader view email

    view :: Reader Email Html
    view = do
    page_ <- page
  4. kylecorbelli revised this gist Jun 30, 2018. 1 changed file with 7 additions and 9 deletions.
    16 changes: 7 additions & 9 deletions haskell-simple-webpage-reader-monad-do-notation.hs
    Original file line number Diff line number Diff line change
    @@ -13,6 +13,12 @@ page = do
    , content_
    ]

    topNav :: Html
    topNav =
    div
    [ h1 [ "OurSite.com" ]
    ]

    content :: Reader Email Html
    content = do
    email <- ask
    @@ -49,12 +55,4 @@ widget = do
    email <- ask
    return $ div
    [ p [ "Hey " ++ email ++ ", we've got a great offer for you!" ]
    ]

    topNav :: Html
    topNav =
    div
    [ h1
    [ "OurSite.com"
    ]
    ]
    ]
  5. kylecorbelli created this gist Jun 30, 2018.
    60 changes: 60 additions & 0 deletions haskell-simple-webpage-reader-monad-do-notation.hs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,60 @@
    view :: Reader Email Html
    view = do
    page_ <- page
    return $ div
    [ page_
    ]

    page :: Reader Email Html
    page = do
    content_ <- content
    return $ div
    [ topNav
    , content_
    ]

    content :: Reader Email Html
    content = do
    email <- ask
    right_ <- right
    return $ div
    [ h1 [ "Custom Content for " ++ email ]
    , left
    , right_
    ]

    left :: Html
    left =
    div
    [ p [ "this is the left side" ]
    ]

    right :: Reader Email Html
    right = do
    article_ <- article
    return $ div
    [ article_
    ]

    article :: Reader Email Html
    article = do
    widget_ <- widget
    return $ div
    [ p [ "this is an article" ]
    , widget_
    ]

    widget :: Reader Email Html
    widget = do
    email <- ask
    return $ div
    [ p [ "Hey " ++ email ++ ", we've got a great offer for you!" ]
    ]

    topNav :: Html
    topNav =
    div
    [ h1
    [ "OurSite.com"
    ]
    ]