×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
No content
Slide 2
Slide 2 text
REACT-HASKELL
Slide 3
Slide 3 text
HI, MY NAME IS JOEL
Slide 4
Slide 4 text
HI, MY NAME IS JOEL ... AND I USE HASKELL
Slide 5
Slide 5 text
HASKELL ▸ statically typed ▸ lazy ▸ purely functional
Slide 6
Slide 6 text
HASKELL ▸ statically typed ▸ lazy ▸ purely functional ▸ really cool
Slide 7
Slide 7 text
HASTE ▸ dialect of Haskell ▸ runs in browser
Slide 8
Slide 8 text
HASTE
Slide 9
Slide 9 text
BLAZE-HTML sample :: Html sample = p ! class_ "styled" $ em "Basic Algebra" becomes
Basic Algebra
Slide 10
Slide 10 text
REACT-HASKELL sample :: React sample = p
Basic Algebra
Slide 11
Slide 11 text
PUT IT ON THE PAGE main :: IO () main = do Just elem <- elemById "id" render elem sample
Slide 12
Slide 12 text
MORE COMPLICATED sample :: React sample = div
Slide 13
Slide 13 text
CONTROLLED COMPONENT view :: Elem -> JSString -> IO () view elem str = render elem $ div $ do "Khan Academy" input
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
LET'S MAKE THAT EASIER
Slide 16
Slide 16 text
STATEFUL COMPONENT REDUX view :: StatefulReact JSString view = div $ do "Khan Academy" input
Slide 17
Slide 17 text
LIFECYCLE METHODS componentDidMount, componentWillUnmount, ... ?
Slide 18
Slide 18 text
QUESTIONS?