SlideShare a Scribd company logo
1 of 23
Getting the MVVM kicked out of your F#'n Monads  Richard Minerich F# MVP of the Year Senior Researcher, Bayard Rock @Rickasaurus /  [email_address]   Fill this space with whatever you want (graphic, logo, whatever)
Time Warp back to 6 th  Grade ,[object Object],[object Object],[object Object]
What about functions? ,[object Object],[object Object],[object Object],[object Object],[object Object]
>> is like add for functions ,[object Object],[object Object],[object Object],[object Object],[object Object]
5 + 0 = 5 and 3 * 1  = 3 ,[object Object]
5 + 0 = 5 and 3 * 1  = 3 ,[object Object],[object Object],[object Object],[object Object]
functions are like numbers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
(2 / 3) / 4 isn’t 2 / (3 / 4) but,  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
(1 - 2) - 3 isn’t 1 - (2 - 3) but, ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
(1 - 2) - 3 isn’t 1 - (2 - 3) cont. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
School’s out! ,[object Object]
One Style of Abstraction ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
It works with functions too! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Computation Expressions ,[object Object]
Computation Expressions! ,[object Object],[object Object]
What can you manipulate? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Let’s take a look at a simple CE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
It goes much deeper. ,[object Object],[object Object],[object Object],[object Object]
Option ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Maybe ,[object Object]
“ F# 2.0 is a book that assumes you are a professional,  and as such, does not waste your time with a lot of fluff.”
Check out F#! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
We thank the following companies for their gracious sponsorship Platinum Sponsor Gold Sponsors Silver Sponsors

More Related Content

What's hot

Distributive Property
Distributive PropertyDistributive Property
Distributive PropertyJessca Lundin
 
How Can We Evaluate Composition Of Functions
How Can We Evaluate Composition Of FunctionsHow Can We Evaluate Composition Of Functions
How Can We Evaluate Composition Of Functionsguest73f464
 
Intro to exponents edmodo 2013 14
Intro to exponents edmodo 2013 14Intro to exponents edmodo 2013 14
Intro to exponents edmodo 2013 14shumwayc
 
Order of operations
Order of operationsOrder of operations
Order of operationssonnynexus
 
J3 j3bu5t3r5
J3 j3bu5t3r5J3 j3bu5t3r5
J3 j3bu5t3r5gsantos15
 
Quadratic Expressions
Quadratic ExpressionsQuadratic Expressions
Quadratic Expressions2IIM
 
Algebra 1 Unit 2.7 Distributive Property
Algebra 1 Unit 2.7 Distributive PropertyAlgebra 1 Unit 2.7 Distributive Property
Algebra 1 Unit 2.7 Distributive PropertyJaqueline Vallejo
 
Reconstructing Textual Documents from n-grams
Reconstructing Textual Documents from n-gramsReconstructing Textual Documents from n-grams
Reconstructing Textual Documents from n-gramsmatthigalle
 
TechMathII - 2.2 - Equations and Formulas
TechMathII - 2.2 - Equations and FormulasTechMathII - 2.2 - Equations and Formulas
TechMathII - 2.2 - Equations and Formulaslmrhodes
 
Presentation4
Presentation4Presentation4
Presentation4Jorge707r
 
[ACM-ICPC] Tree Isomorphism
[ACM-ICPC] Tree Isomorphism[ACM-ICPC] Tree Isomorphism
[ACM-ICPC] Tree IsomorphismChih-Hsuan Kuo
 

What's hot (18)

Distributive Property
Distributive PropertyDistributive Property
Distributive Property
 
1113 ch 11 day 13
1113 ch 11 day 131113 ch 11 day 13
1113 ch 11 day 13
 
How Can We Evaluate Composition Of Functions
How Can We Evaluate Composition Of FunctionsHow Can We Evaluate Composition Of Functions
How Can We Evaluate Composition Of Functions
 
Intro to exponents edmodo 2013 14
Intro to exponents edmodo 2013 14Intro to exponents edmodo 2013 14
Intro to exponents edmodo 2013 14
 
Parentesi
ParentesiParentesi
Parentesi
 
Order of operations
Order of operationsOrder of operations
Order of operations
 
J3 j3bu5t3r5
J3 j3bu5t3r5J3 j3bu5t3r5
J3 j3bu5t3r5
 
Quadratic Expressions
Quadratic ExpressionsQuadratic Expressions
Quadratic Expressions
 
Algebra 1 Unit 2.7 Distributive Property
Algebra 1 Unit 2.7 Distributive PropertyAlgebra 1 Unit 2.7 Distributive Property
Algebra 1 Unit 2.7 Distributive Property
 
Reconstructing Textual Documents from n-grams
Reconstructing Textual Documents from n-gramsReconstructing Textual Documents from n-grams
Reconstructing Textual Documents from n-grams
 
TechMathII - 2.2 - Equations and Formulas
TechMathII - 2.2 - Equations and FormulasTechMathII - 2.2 - Equations and Formulas
TechMathII - 2.2 - Equations and Formulas
 
Cube of binomial
Cube of binomialCube of binomial
Cube of binomial
 
Presentation4
Presentation4Presentation4
Presentation4
 
Square of a binomial
Square of a binomialSquare of a binomial
Square of a binomial
 
[ACM-ICPC] Tree Isomorphism
[ACM-ICPC] Tree Isomorphism[ACM-ICPC] Tree Isomorphism
[ACM-ICPC] Tree Isomorphism
 
133467 p3a2
133467 p3a2133467 p3a2
133467 p3a2
 
2
22
2
 
Elements of a sequence
Elements of a sequenceElements of a sequence
Elements of a sequence
 

Similar to Getting the MVVM Kicked Out of Your F#'n Monads

A Skeptics guide to functional style javascript
A Skeptics guide to functional style javascriptA Skeptics guide to functional style javascript
A Skeptics guide to functional style javascriptjonathanfmills
 
Python quickstart for programmers: Python Kung Fu
Python quickstart for programmers: Python Kung FuPython quickstart for programmers: Python Kung Fu
Python quickstart for programmers: Python Kung Fuclimatewarrior
 
Pythonlearn-08-Lists.pptx
Pythonlearn-08-Lists.pptxPythonlearn-08-Lists.pptx
Pythonlearn-08-Lists.pptxMihirDatir
 
F# Presentation
F# PresentationF# Presentation
F# Presentationmrkurt
 
Pythonlearn-08-Lists for fundatmentals of Programming
Pythonlearn-08-Lists for fundatmentals of ProgrammingPythonlearn-08-Lists for fundatmentals of Programming
Pythonlearn-08-Lists for fundatmentals of ProgrammingABIGAILJUDITHPETERPR
 
Python elements list you can study .pdf
Python elements list you can study  .pdfPython elements list you can study  .pdf
Python elements list you can study .pdfAUNGHTET61
 
Mixing functional and object oriented approaches to programming in C#
Mixing functional and object oriented approaches to programming in C#Mixing functional and object oriented approaches to programming in C#
Mixing functional and object oriented approaches to programming in C#Mark Needham
 
Mixing Functional and Object Oriented Approaches to Programming in C#
Mixing Functional and Object Oriented Approaches to Programming in C#Mixing Functional and Object Oriented Approaches to Programming in C#
Mixing Functional and Object Oriented Approaches to Programming in C#Skills Matter
 
Thinking Functionally In Ruby
Thinking Functionally In RubyThinking Functionally In Ruby
Thinking Functionally In RubyRoss Lawley
 
Calculation techniques in numbers
Calculation techniques in numbersCalculation techniques in numbers
Calculation techniques in numberssealih
 
search_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sortsearch_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sortShanmuganathan C
 
Python for High School Programmers
Python for High School ProgrammersPython for High School Programmers
Python for High School ProgrammersSiva Arunachalam
 
第6回 関数とフロー制御
第6回 関数とフロー制御第6回 関数とフロー制御
第6回 関数とフロー制御Wataru Shito
 

Similar to Getting the MVVM Kicked Out of Your F#'n Monads (20)

A Skeptics guide to functional style javascript
A Skeptics guide to functional style javascriptA Skeptics guide to functional style javascript
A Skeptics guide to functional style javascript
 
Python quickstart for programmers: Python Kung Fu
Python quickstart for programmers: Python Kung FuPython quickstart for programmers: Python Kung Fu
Python quickstart for programmers: Python Kung Fu
 
Compose Method
Compose MethodCompose Method
Compose Method
 
Compose Method
Compose MethodCompose Method
Compose Method
 
Pythonlearn-08-Lists.pptx
Pythonlearn-08-Lists.pptxPythonlearn-08-Lists.pptx
Pythonlearn-08-Lists.pptx
 
R tutorial (R program 101)
R tutorial (R program 101)R tutorial (R program 101)
R tutorial (R program 101)
 
F# Presentation
F# PresentationF# Presentation
F# Presentation
 
Promise
PromisePromise
Promise
 
Pythonic Math
Pythonic MathPythonic Math
Pythonic Math
 
Pythonlearn-08-Lists for fundatmentals of Programming
Pythonlearn-08-Lists for fundatmentals of ProgrammingPythonlearn-08-Lists for fundatmentals of Programming
Pythonlearn-08-Lists for fundatmentals of Programming
 
Sorting techniques
Sorting techniques Sorting techniques
Sorting techniques
 
Python elements list you can study .pdf
Python elements list you can study  .pdfPython elements list you can study  .pdf
Python elements list you can study .pdf
 
Mixing functional and object oriented approaches to programming in C#
Mixing functional and object oriented approaches to programming in C#Mixing functional and object oriented approaches to programming in C#
Mixing functional and object oriented approaches to programming in C#
 
Mixing Functional and Object Oriented Approaches to Programming in C#
Mixing Functional and Object Oriented Approaches to Programming in C#Mixing Functional and Object Oriented Approaches to Programming in C#
Mixing Functional and Object Oriented Approaches to Programming in C#
 
Thinking Functionally In Ruby
Thinking Functionally In RubyThinking Functionally In Ruby
Thinking Functionally In Ruby
 
Calculation techniques in numbers
Calculation techniques in numbersCalculation techniques in numbers
Calculation techniques in numbers
 
Begin with Python
Begin with PythonBegin with Python
Begin with Python
 
search_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sortsearch_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sort
 
Python for High School Programmers
Python for High School ProgrammersPython for High School Programmers
Python for High School Programmers
 
第6回 関数とフロー制御
第6回 関数とフロー制御第6回 関数とフロー制御
第6回 関数とフロー制御
 

More from Richard Minerich

How we use functional programming to find the bad guys @ Build Stuff LT and U...
How we use functional programming to find the bad guys @ Build Stuff LT and U...How we use functional programming to find the bad guys @ Build Stuff LT and U...
How we use functional programming to find the bad guys @ Build Stuff LT and U...Richard Minerich
 
GHCi: More Awesome Than You Thought
GHCi: More Awesome Than You ThoughtGHCi: More Awesome Than You Thought
GHCi: More Awesome Than You ThoughtRichard Minerich
 
Functional Ideas for a Cloudy Future
Functional Ideas for a Cloudy FutureFunctional Ideas for a Cloudy Future
Functional Ideas for a Cloudy FutureRichard Minerich
 
How you can get started with F# today
How you can get started with F# todayHow you can get started with F# today
How you can get started with F# todayRichard Minerich
 
F# in the Classroom and the Lab
F# in the Classroom and the LabF# in the Classroom and the Lab
F# in the Classroom and the LabRichard Minerich
 

More from Richard Minerich (7)

How we use functional programming to find the bad guys @ Build Stuff LT and U...
How we use functional programming to find the bad guys @ Build Stuff LT and U...How we use functional programming to find the bad guys @ Build Stuff LT and U...
How we use functional programming to find the bad guys @ Build Stuff LT and U...
 
GHCi: More Awesome Than You Thought
GHCi: More Awesome Than You ThoughtGHCi: More Awesome Than You Thought
GHCi: More Awesome Than You Thought
 
Functional Ideas for a Cloudy Future
Functional Ideas for a Cloudy FutureFunctional Ideas for a Cloudy Future
Functional Ideas for a Cloudy Future
 
F# and the DLR
F# and the DLRF# and the DLR
F# and the DLR
 
Fun and Games in F#
Fun and Games in F#Fun and Games in F#
Fun and Games in F#
 
How you can get started with F# today
How you can get started with F# todayHow you can get started with F# today
How you can get started with F# today
 
F# in the Classroom and the Lab
F# in the Classroom and the LabF# in the Classroom and the Lab
F# in the Classroom and the Lab
 

Recently uploaded

Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data SciencePaolo Missier
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaWSO2
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformWSO2
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxMarkSteadman7
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseWSO2
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuidePixlogix Infotech
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 

Recently uploaded (20)

Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

Getting the MVVM Kicked Out of Your F#'n Monads

  • 1. Getting the MVVM kicked out of your F#'n Monads Richard Minerich F# MVP of the Year Senior Researcher, Bayard Rock @Rickasaurus / [email_address] Fill this space with whatever you want (graphic, logo, whatever)
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. “ F# 2.0 is a book that assumes you are a professional, and as such, does not waste your time with a lot of fluff.”
  • 22.
  • 23. We thank the following companies for their gracious sponsorship Platinum Sponsor Gold Sponsors Silver Sponsors

Editor's Notes

  1. Where we put the parens doesn’t matter, the result will be equal
  2. We can combine the functions by calling them one after another, but this isn’t really an operation, just passing
  3. This ends up having same effect as stacking functions inside calls to each other, but is much more flexible. Now, we can do a lot of things with functions that would could only do with numbers before.
  4. This is called the identity F# comes with the id function built in
  5. This is called the identity F# comes with the id function built in
  6. This is associativity all stateless functions share this property because execution is delayed
  7. The >> operator demands associtivity and so everything must be defined in a way that enforces it
  8. Because minusTwo, minusOne and minusThree are really the same as addNegativeOne, addNegativeTwo and addNegativeThree The order of calculation is in the order in which things are appended.
  9. For this same reason, our addition functions have exactly the same properties as addition itself. You can put parans anywhere you want but you can’t reorder without breaking the function
  10. But first we need to revisit some very basic math. Trust me, it will be worth it.
  11. Computation expressions let us define the relationships between things in a specific context. Let’s take this apart.
  12. But don’t worry, we’ll take it slow
  13. Let’s take small steps first. Look at this code.
  14. With this pattern, everything is designed in terms of merging containers, putting things in the container or pulling things out
  15. With a maybe monad, we can pretend like the maybe isn’t even there