Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elm 101

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Tom Wu Tom Wu
February 23, 2017

Elm 101

Avatar for Tom Wu

Tom Wu

February 23, 2017
Tweet

Other Decks in Programming

Transcript

  1. Take a glance i m p o r t H

    t m l e x p o s i n g ( b e g i n n e r P r o g r a m , d i v , b u t t o n , t e x t ) i m p o r t H t m l . E v e n t s e x p o s i n g ( o n C l i c k ) m a i n = b e g i n n e r P r o g r a m { m o d e l = 0 , v i e w = v i e w , u p d a t e = u p d a t e } v i e w m o d e l = d i v [ ] [ b u t t o n [ o n C l i c k D e c r e m e n t ] [ t e x t " ‐ " ] , d i v [ ] [ t e x t ( t o S t r i n g m o d e l ) ] , b u t t o n [ o n C l i c k I n c r e m e n t ] [ t e x t " + " ] ] t y p e M s g = I n c r e m e n t | D e c r e m e n t u p d a t e m s g m o d e l = c a s e m s g o f I n c r e m e n t ‐ > m o d e l + 1 D e c r e m e n t ‐ > m o d e l ‐ 1
  2. JavaScript Interop v a r E l m = r

    e q u i r e ( ' d i s t / e l m / a p p . j s ' ) ; v a r n o d e = d o c u m e n t . g e t E l e m e n t B y I d ( ' e l m ‐ a p p ' ) ; v a r a p p = E l m . A p p . e m b e d ( n o d e ) ;
  3. Functional Programming 無可避免地要來談一下 v a r a d d =

    f u n c t i o n ( x , y ) { r e t u r n x + y } ; v a r m u l t i p l y = f u n c t i o n ( x , y ) { r e t u r n x * y } ;
  4. Functional Programming / / 结合律(a s s o s i

    a t i v e ) a d d ( a d d ( x , y ) , z ) = = a d d ( x , a d d ( y , z ) ) ; / / 交换律(c o m m u t a t i v e ) a d d ( x , y ) = = a d d ( y , x ) ; / / 同一律(i d e n t i t y ) a d d ( x , 0 ) = = x ; / / 分配律(d i s t r i b u t i v e ) m u l t i p l y ( x , a d d ( y , z ) ) = = a d d ( m u l t i p l y ( x , y ) , m u l t i p l y ( x , z ) ) ;
  5. Functional Programming Pure Function No Side Effect 1 to 1

    Function Cacheable Self‑Documenting Testable Reasonable
  6. Functional Programming map, filter, reduce [ ] . m a

    p ( i t e m = > i t e m . i d ) ; [ ] . f l i t e r ( i t e m = > ! ! i t e m . i d ) [ ] . r e d u c e ( ( a c c , c u r ) = > a c c + c u r )
  7. Functional Programming s o r t [ 5 , 3

    , 6 ] H t m l . m a p P l a y e r s M s g ( P l a y e r s . L i s t . v i e w m o d e l . p l a y e r s )
  8. Hello World i m p o r t H t

    m l e x p o s i n g ( t e x t ) m a i n = t e x t " H e l l o , W o r l d ! "
  9. Math f o u r = 2 + 2 s

    i x t e e n = 8 * 2 i s T e e n a g e a g e = ( a g e > 1 2 ) & & ( a g e < 2 0 ) i s T e e n a g e N o P a r e n s a g e = a g e > 1 2 & & a g e < 2 0
  10. Calling Function f o u r = s q r

    t 1 6 e l e v e n = m a x 2 1 1 t w e n t y = m a x ( s q r t 1 0 0 ) ( 4 * 5 )
  11. HTML m a i n = b e g i

    n n e r P r o g r a m { m o d e l = 0 , v i e w = v i e w , u p d a t e = u p d a t e } v i e w m o d e l = d i v [ ] [ b u t t o n [ o n C l i c k D e c r e m e n t ] [ t e x t " ‐ " ] , d i v [ ] [ t e x t ( t o S t r i n g m o d e l ) ] , b u t t o n [ o n C l i c k I n c r e m e n t ] [ t e x t " + " ] ] t y p e M s g = I n c r e m e n t | D e c r e m e n t u p d a t e m s g m o d e l = c a s e m s g o f I n c r e m e n t ‐ > m o d e l + 1 D e c r e m e n t ‐ > m o d e l ‐ 1