Wearing the hair shirt Wearing the hair shirt - Microsoft Research
Wearing the hair shirt Wearing the hair shirt - Microsoft Research Wearing the hair shirt Wearing the hair shirt - Microsoft Research
Extensiblity Like OOP, one can add new data types “later”. E.g. QuickCheck works for your new data types (provided you make them instances of Arby) ...but also not like OOP
Type-based dispatch class Num a where (+) :: a -> a -> a negate :: a -> a fromInteger :: Integer -> a ... A bit like OOP, except that method suite passed separately? double :: Num a => a -> a double x = x+x No: type classes implement type-based dispatch, not value-based dispatch
- Page 1 and 2: Wearing the hair shirt A retrospect
- Page 3 and 4: Haskell is 15 years old (born FPCA
- Page 5 and 6: Timeline Sept 87: kick off Apr 90:
- Page 7 and 8: Reflections on the process The i
- Page 9: Reflections on process Self-appoin
- Page 12 and 13: Syntactic redundancy Seductive ide
- Page 14 and 15: “Expression style” Define a fun
- Page 16 and 17: Example (ICFP02 prog comp) Pattern
- Page 18 and 19: What really matters?
- Page 20 and 21: But... Laziness makes it much, muc
- Page 22: Combinator libraries Recursive valu
- Page 25 and 26: Monadic I/O A value of type (IO t)
- Page 27 and 28: Connecting I/O operations (>>=) ::
- Page 29 and 30: Control structures Values of type (
- Page 31 and 32: Monads Exceptions type Exn a = E
- Page 33 and 34: The IO monad The IO monad allows
- Page 35 and 36: What have we achieved? ...without
- Page 37 and 38: Open challenge 1 Open problem: the
- Page 39 and 40: Monad summary Monads are a beautif
- Page 41 and 42: What really matters? Laziness Purit
- Page 44 and 45: Type classes class Eq a where (==)
- Page 46 and 47: Type classes over time Type classe
- Page 48 and 49: Quickcheck propRev :: [Int] -> Bool
- Page 52 and 53: Type-based dispatch class Num a whe
- Page 54 and 55: Cool generalisations Multi-paramet
- Page 56: Type classes summary A much more f
- Page 59 and 60: Is sexy good? Yes! Well typed prog
- Page 61 and 62: Destination = F w
- Page 63 and 64: Modules Porsche High power, but poo
- Page 65 and 66: Encapsulating it all data ST s a --
- Page 67 and 68: Shirts off to Wadler Type classes
Type-based dispatch<br />
class Num a where<br />
(+) :: a -> a -> a<br />
negate :: a -> a<br />
fromInteger :: Integer -> a<br />
...<br />
A bit like OOP, except that method suite<br />
passed separately?<br />
double :: Num a => a -> a<br />
double x = x+x<br />
No: type classes implement type-based<br />
dispatch, not value-based dispatch