• Like
Haskell for Scala-ists
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Haskell for Scala-ists

  • 1,248 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,248
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
13
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Haskell for Scala-ists Chris Eidhof
  • 2. Three things • Datatypes • Purity • Laziness
  • 3. List Type-parameter Constructor • data [a] = [] | a : [a] Case distinction Type Constructor
  • 4. Functions Give me a list of a And I’ll return a list of a • reverse :: [a] -> [a] • reverse [] = [] • reverse (x:xs) = reverse xs ++ [x] Pattern Matching
  • 5. Purity • State = Evil
  • 6. Purity • Same Input • ntial Refere cy Transparen = • Same output
  • 7. Purity • No side effects: • * Variables / Mutable state • * I/O • * launchMissiles()
  • 8. Example • sort :: [Int] -> [Int] How do we know sort doesn’t launch missiles?
  • 9. Doing I/O • putStrLn :: String -> IO () The IO type shows us it’s not pure
  • 10. Doing I/O (>>=) :: IO a -> (a -> IO b) -> IO b main = putStrLn "hello! what's your name?" >>= () -> getLine >>= name -> putStrLn ("hello, " ++ name)
  • 11. Doing I/O main = do putStrLn "hello! what's your name?" name <- getLine putStrLn ("hello, " ++ name)
  • 12. Fusion • myFunction = map square . map toInt • = map (square . toInt)
  • 13. Quickcheck • Automatic testing of pure code.
  • 14. Parallel code • map  :: (a -> b) -> [a] -> [b] • parMap :: (a -> b) -> [a] -> [b]
  • 15. Composability • Pure code is easy to compose, it is • * Stateless • * Self-contained
  • 16. Effects Useful Most Nirvana languages Haskell Useless Dangerous Safe Simon Peyton-Jones, Caging The Effects Monster
  • 17. Laziness • if (x < 10 && x > 5)
  • 18. Laziness: Quicksort qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) minimum ls = head (quickSort ls)
  • 19. Read more • Real World Haskell - http://book.realworldhaskell.org/ • Haskell.org - http://haskell.org • Haskell Café - http://haskell.org/haskellwiki/Mailing_lists • Planet Haskell - http://planet.haskell.org/ • Haskell reddit - http://haskell.reddit.com •
  • 20. Getting Started • 1. Install the Haskell Platform • http://hackage.haskell.org/platform/ • 2. Haskell in 10 minutes • http://haskell.org/haskellwiki/ Learn_Haskell_in_10_minutes
  • 21. Keep in touch • http://github.com/chriseidhof • @chriseidhof