~/talk

Domain Modeling Made Functional

Talkat NDC Sydney 2017 · 2017-08-14..08-18· [frontend-architecture]
slides:none on file

Shows how F#’s type system—option type, discriminated union and generics—encodes business rules so invalid states can’t exist at compile time. Builds concrete types: EmailAddress, String50, Quantity (0–99), VerifiedEmail with a private constructor, and ContactInfo as a union so “must have email or postal” is guaranteed. Uses pattern matching and immutability to replace runtime validation, cuts unit tests by catching errors at compile time, and demonstrates working examples and code on FSharp.org / ndcsydney resources.

AI-written summary · about

  1. 0:00Intro
  2. 1:40Why do domain modeling
  3. 2:51How can we reduce the garbage in
  4. 6:10Domain modelling made functional
  5. 6:23Domain driven design
  6. 7:11Outline
  7. 7:34Is Functional Programming Scary
  8. 9:28Functional World
  9. 10:02Functional Program
  10. 12:02Domain During Design
  11. 12:23Shared Mental Model
  12. 14:22Context
  13. 15:38Terminology
  14. 18:33Code
  15. 19:13Persistence
  16. 20:44Algebraic Type System
  17. 21:02Composable Type System
  18. 24:32Sum Type
  19. 25:12Payment Methods
  20. 26:05Pattern Matching
  21. 27:59Type Checking
  22. 29:26Optional Values
  23. 32:06Optional Boolean
  24. 32:35Optional String
  25. 33:13Required Choice
  26. 33:34Email Addresses
  27. 33:52Customer IDs
  28. 35:10Email Address
  29. 36:48Spring
  30. 37:09Ecommerce
  31. 39:10Business Rules
  32. 46:33Contact Information
  33. 46:53Static Types
  34. 48:10Summary
  35. 49:29FSHARP
~/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.