Skip to content

Instantly share code, notes, and snippets.

View kylecorbelli's full-sized avatar

Kyle Corbelli kylecorbelli

  • Uber
  • SF Bay Area, CA
View GitHub Profile
  • view
    • page
      • topnav
      • content (needs email)
        • left
        • right
          • article
  • widget (needs email)
newtype Reader e a = Reader { runReader :: e -> a }
instance Functor (Reader a) where
fmap f (Reader g) = Reader $ f . g
instance Applicative (Reader a) where
pure x = Reader $ \_ -> x
m <*> n = Reader $ \e -> (runReader m e) (runReader n e)
instance Monad (Reader a) where
main :: IO ()
main =
putStrLn "what is your email address?" >>
getLine >>= \email ->
putStrLn . show $ runReader view email
view :: Reader Email Html
view =
page >>= \page' ->
return $ div
main :: IO ()
main = do
putStrLn "what is your email address?"
email <- getLine
putStrLn . show $ runReader view email
view :: Reader Email Html
view = do
page' <- page
return $ div
module Html where
import Control.Monad.Reader (Reader, ask, runReader)
import Data.List (intercalate)
import Data.String
import Prelude hiding (div)
import System.Environment (getArgs)
import System.IO (writeFile)
main :: IO ()
main :: IO ()
main = putStrLn $ first "Buddy"
type Name = String
first :: Name -> String
first name =
second name ++ third name
second :: Name -> String