~/talk

A Practical Introduction to Eff in Haskell

Talkat LambdaConf 2019 · 2019-06-05..06-07· [testing]
links:none on file
slides:none on file

Builds a small Yesod/Persistent app and wires two Eff effects with two interpreters each so business logic stays pure while implementations vary. Uses freer-simple (and mentions polysemy for speed) and shows concrete test interpreters that feed inputs and capture outputs so logging and IO become mockable reader/writer effects. Demonstrates a price‑feed example with Postgres + cache interpreters reused together, measures that monadic binds can be ~20–35× slower but the approach works and simplifies testing.

AI-written summary · about

  1. 0:00Introduction
  2. 1:00Effects Modeling
  3. 1:34Requirements Thrash
  4. 3:07Handwave
  5. 3:31Eff in Haskell
  6. 3:59Testing
  7. 6:27Polymorphic
  8. 6:48Monad
  9. 7:15Parameterization
  10. 8:21Type Signatures
  11. 9:29IOU
  12. 10:01Domain Effects
  13. 11:37How do we do this
  14. 12:20What libraries will help
  15. 13:00Minimum Viable FF effect
  16. 14:53Defining lowercase functions
  17. 16:23Writing the business logic
  18. 17:22Writing the interpreter
  19. 18:20The type signature
  20. 18:50Natural transformation
  21. 19:14Typelevel list
  22. 20:28Console to IO
  23. 21:05What about testing
  24. 22:09Hedgehog
  25. 22:42Controlling Interpretations
  26. 24:13Reinterpret
  27. 24:40Runreader
  28. 25:57Peer Unit
  29. 26:48What Weve Done
  30. 27:30Can We Do This
  31. 28:14RealLife Example
  32. 28:31Problem Statement
  33. 29:35Business Logic
  34. 30:14Question Marks
  35. 31:03Interpreter
  36. 32:39Reader IO
  37. 33:20CI Pipeline
  38. 34:09Reader Effect
  39. 35:43Cache
  40. 38:21Why not
  41. 39:34MTL
  42. 40:25Pure Script
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.