Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Railway Oriented Programming - Funktionaler programmieren ohne Exceptions

284 views

Published on

Vortrag von Stefan Macke auf der SEROM 3.0 am 19.10.2018 in Vechta.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Railway Oriented Programming - Funktionaler programmieren ohne Exceptions

  1. 1. Funktionaler programmieren ohne Exceptions Railway Oriented Programming
  2. 2. Exceptions sind schlimmer als GOTOs. JOELSPOLSKY CEO Stack Exchange Network Betsy Weber - Joel Spolsky - flickr.com/photos/betsyweber/8044869747 CC Attribution 2.0 Generic - creativecommons.org/licenses/by/2.0/ Quelle: https://www.joelonsoftware.com/2003/10/13/13/
  3. 3. knowyourmeme.com/photos/503645-they-still-do-not-realize
  4. 4. Tomwang112 - Copyright 2011 - www.istockphoto.com/fotos/113592506
  5. 5. Alexas_Fotos - CC0 Public Domain - pixabay.com/de/sprung-new-york-gefährlich-verrückt-2040426/
  6. 6. Die null-Referenz: Mein Milliarden- Dollar-Fehler. TONYHOARE Informatik-Pionier Rama - Sir Charles Antony Richard Hoare giving a talk at the EPFL on 20th of June 2011 commons.wikimedia.org/wiki/File:Sir_Tony_Hoare_IMG_5125.jpg - CC BY-SA 2.0 FR - creativecommons.org/licenses/by-sa/2.0/fr/ Quelle: https://www.infoq.com/presentations/ Null-References-The-Billion-Dollar-Mistake-Tony-Hoare
  7. 7. obpia30 - CC0 Public Domain - pixabay.com/de/katze-box-predator-650770/
  8. 8. obpia30 - CC0 Public Domain - pixabay.com/de/katze-box-predator-650770/
  9. 9. Railway Oriented Programming
  10. 10. quimono - CC0 Public Domain - pixabay.com/de/wasser-tröpfchen-tropfen-spritzen-1281247/
  11. 11. Katie Tegtmeyer - Crossed fingers I - flickr.com/photos/katietegtmeyer/124315323 CC Attribution 2.0 Generic - creativecommons.org/licenses/by/2.0/
  12. 12. Success Failure
  13. 13. Success Failure onSuccess(fun) fun() -
  14. 14. Success Failure onSuccess(fun) onFailure(fun) fun() - fun() -
  15. 15. Success Failure onSuccess(fun) onFailure(fun) onBoth(fun) fun() - fun() fun() - fun()
  16. 16. eak_kkk - CC0 Public Domain - pixabay.com/de/wasserfall-wasser-spritzen-platsch-1049079/
  17. 17. Arcaion - CC0 Public Domain - pixabay.com/de/die-pille-kapsel-medizin-1772275/
  18. 18. onSuccess()
  19. 19. onSuccess()
  20. 20. onSuccess()
  21. 21. ensure()
  22. 22. ensure()
  23. 23. ensure() true
  24. 24. ensure() true false
  25. 25. map()
  26. 26. map()
  27. 27. map()
  28. 28. map() ok
  29. 29. map() ok Fehler
  30. 30. (alle)
  31. 31. (alle)
  32. 32. ensure(…) Success Failure map(…) map(…)
  33. 33. Quelle: https://vimeo.com/113707214
  34. 34. Quelle: https://www.pluralsight.com/courses/csharp-applying-functional-principles
  35. 35. Quelle: https://github.com/StefanMacke/ao-railway
  36. 36. Quelle: https://heise.de/-3598438
  37. 37. pvdv63 - CC0 Public Domain - pixabay.com/de/notbremse-gefahr-zug-blockiert-1053741/
  38. 38. PublicDomainPictures - CC0 Public Domain - pixabay.com/de/domino-dominosteine-spiel-spielen-21176/
  39. 39. Thomas Backa - WTF mug - CC0 Public Domain - flickr.com/photos/backa/4180780815/
  40. 40. obpia30 - CC0 Public Domain - pixabay.com/de/katze-box-predator-650770/ Monaden
  41. 41. Monade repräsentiert verhindert/erleichtert
  42. 42. Optional Wert vorhanden? null-Checks
  43. 43. Optional Wert vorhanden? null-Checks Stream mehrere Werte eigene Iteration
  44. 44. Optional Wert vorhanden? null-Checks Stream mehrere Werte eigene Iteration Promise asynchrones Ergebnis eigene Threads
  45. 45. Optional Wert vorhanden? null-Checks Stream mehrere Werte eigene Iteration Promise asynchrones Ergebnis eigene Threads Result Ergebnis einer Aktion Exception Handling
  46. 46. 1) Typkonstruktor
  47. 47. 2) return() oder unit()
  48. 48. 3) bind(), >>= oder flatMap()
  49. 49. 1) Identität von rechts m >>= return = m 2) Identität von links return x >>= f = f x 3) Assoziativität (m >>= f) >>= g = m >>= (x . f x >>= g) Quelle: http://www.inf.fu-berlin.de/lehre/SS09/PI02/docs/monaden.pdf
  50. 50. thepoodleanddogblog.typepad.com/the_poodle_and_dog_blog/2010/10/this-is-what-.html
  51. 51. ROP in der Praxis
  52. 52. WikiImages - CC0 Public Domain - pixabay.com/de/lochkartenlocher-datenverarbeitung-62897/
  53. 53. Fazit
  54. 54. https://imgflip.com/i/1m1kp2
  55. 55. stefan.macke.it anwendungsentwicklerpodcast.de @StefanMacke serom.de/feedback

×