haskell
play

Haskell Deian Stefan (adopted from my & Edward Yangs CSE242 - PowerPoint PPT Presentation

Haskell Deian Stefan (adopted from my & Edward Yangs CSE242 slides) Why Haskell? The great ideas [Haskell] Expressive power (say more with less) Pattern matching First-class functions Exception handling Type inference Continuations


  1. Haskell Deian Stefan (adopted from my & Edward Yang’s CSE242 slides)

  2. Why Haskell?

  3. The great ideas [Haskell] Expressive power (say more with less) Pattern matching First-class functions Exception handling Type inference Continuations Monads Reliability and reuse Type classes Type polymorphism Objects & inheritance Modules Cross-cutting concerns Concurrency Memory management

  4. What is Haskell? a typed, lazy, purely functional language

  5. Haskell is statically-typed

  6. Haskell is statically-typed • Everything has a type • Everything must make sense at compile time ➤ Unlike JavaScript where f(x) with f=undefined will not complain until you actually evaluate f(x) • Is JavaScript typed? ➤ A: yes, B: no

  7. Why is this cool?

  8. Why is this cool? • Removes whole classes of bugs • Address bugs early vs. after they have been triggered ➤ Prevent weird errors from creeping up on you ➤ Important for safety, security, and compositionally • Easier to optimize and write faster code ➤ You can remove your typeof checks; compiler can do fast things. V8 relies on types to makes things fast!

  9. Haskell is functional • This means no“side-effects”? ➤ A: yes, B: no

  10. Haskell is functional

  11. Haskell is functional • Support for high-order, first-class functions • Meaning of programs centered around: ➤ evaluating expressions ➤ not executing instructions

  12. Haskell is pure

  13. Haskell is pure • Expressions (e.g., functions) don’t have “side effects” ➤ Is JavaScript pure? A: yes, B: no • Everything is immutable: mutation is a side-effect! • What does it mean for an expression to not have side- effects? ➤ In scope where x 1 , …, x n are defined all occurrences of e (where FV(e) = {x 1 , …, x n }) have the same value

  14. Why is this cool? Don’t take it from me, take it from Backus

  15. Why is this cool? • Algebraic laws: equational reasoning & optimizations ➤ Can always replace things that are equal, λ calculus! • Easier to think about ➤ e.g., don’t need to worry if x changed after calling f • Parallelism ➤ Can evaluate expressions in parallel!

  16. Haskell is lazy

  17. Haskell is lazy • You don’t evaluate an expression until its result is absolutely necessary: in contrast to JavaScript ➤ Remember: call-by-name • Haskell’s evaluation strategy is called call-by-need ➤ Because of the other properties: you actually only evaluate an expression once and cache the result

  18. Why is this cool?

  19. Why is this cool? • Can define your own control structures using functions ➤ E.g., defining if-then-else is much easier in Haskell can be done naturally; less so in JavaScript; why? • Can define infinite data structures ➤ E.g., infinite lists, trees, etc. ➤ Can solve general problem and then project solution

  20. Haskell is a committee language

  21. Why is this interesting? [SPJ] . . . , y b u R Practitioners , t p i r 1,000,000 c S a v a J , + + C 10,000 , C 100 Geeks 1 1yr 5yr 10yr 15yr

  22. Why is this interesting? [SPJ] Practitioners 1,000,000 10,000 100 Geeks Research 1 languages 1yr 5yr 10yr 15yr

  23. Why is this interesting? [SPJ] Practitioners 1,000,000 10,000 100 Successful research Geeks languages 1 1yr 5yr 10yr 15yr

  24. Why is this interesting? [SPJ] Practitioners 1,000,000 10,000 100 Geeks 1 Committee languages 1yr 5yr 10yr 15yr

  25. Why is this interesting? [SPJ] Practitioners 1,000,000 10,000 Haskell 100 Geeks 1 1yr 5yr 10yr 15yr

  26. intro.hs

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend