Submit Search
Upload
Functional Alchemy
•
1 like
•
564 views
Mark Rendle
Follow
Slides from my presentation on Functional Alchemy at DDD SouthWest (and other places)
Read less
Read more
Technology
Report
Share
Report
Share
1 of 33
Recommended
C++
C++
dean129
Python functional programming
Python functional programming
Geison Goes
C++ vs C#
C++ vs C#
sudipv
A tutorial on C++ Programming
A tutorial on C++ Programming
Prof. Erwin Globio
Python Functions 1
Python Functions 1
gsdhindsa
5.functions
5.functions
Hardik gupta
Functional Programming With Python (EuroPython 2008)
Functional Programming With Python (EuroPython 2008)
Adam Byrtek
Interpreter Design Pattern in Javascript
Interpreter Design Pattern in Javascript
Dmytro Verbovyi
Recommended
C++
C++
dean129
Python functional programming
Python functional programming
Geison Goes
C++ vs C#
C++ vs C#
sudipv
A tutorial on C++ Programming
A tutorial on C++ Programming
Prof. Erwin Globio
Python Functions 1
Python Functions 1
gsdhindsa
5.functions
5.functions
Hardik gupta
Functional Programming With Python (EuroPython 2008)
Functional Programming With Python (EuroPython 2008)
Adam Byrtek
Interpreter Design Pattern in Javascript
Interpreter Design Pattern in Javascript
Dmytro Verbovyi
Boolean and conditional logic in Python
Boolean and conditional logic in Python
gsdhindsa
Towards an SMT-based approach for Quantitative Information Flow
Towards an SMT-based approach for Quantitative Information Flow
Quoc-Sang Phan
Polymorphismupload
Polymorphismupload
Mukhtar_Hunzai
[4DEV] Bartosz Sokół - Functional developer in object oriented world - how F#...
[4DEV] Bartosz Sokół - Functional developer in object oriented world - how F#...
PROIDEA
(3) cpp procedural programming
(3) cpp procedural programming
Nico Ludwig
A1 spyder variables_operators_nptel_pds1_sol
A1 spyder variables_operators_nptel_pds1_sol
malasumathi
Python variable assignments | JNTUA | R19 | UNIT 1
Python variable assignments | JNTUA | R19 | UNIT 1
FabMinds
C++ Training
C++ Training
SubhendraBasu5
DIG1108 Lesson 8
DIG1108 Lesson 8
vc-dig1108-fall-2013
Basic structure of C++ program
Basic structure of C++ program
matiur rahman
C language function
C language function
Rajamohan Sangaramoorthy
C++ Preprocessor Directives
C++ Preprocessor Directives
Wasif Altaf
Functional Programming in C# and F#
Functional Programming in C# and F#
Alfonso Garcia-Caro
Infix to postfix
Infix to postfix
Saeed Farooqi
F# for Scala developers
F# for Scala developers
Alfonso Garcia-Caro
Evaluation of postfix expression
Evaluation of postfix expression
Akhil Ahuja
17432 object oriented programming
17432 object oriented programming
soni_nits
Cpp
Cpp
AnanthuGanesh3
Loop optimization
Loop optimization
Vivek Gandhi
Postfix Notation | Compiler design
Postfix Notation | Compiler design
Shamsul Huda
1 phuong phap ban hang va cham soc khach hang
1 phuong phap ban hang va cham soc khach hang
duongdinhson
Eivissa
Eivissa
diana
More Related Content
What's hot
Boolean and conditional logic in Python
Boolean and conditional logic in Python
gsdhindsa
Towards an SMT-based approach for Quantitative Information Flow
Towards an SMT-based approach for Quantitative Information Flow
Quoc-Sang Phan
Polymorphismupload
Polymorphismupload
Mukhtar_Hunzai
[4DEV] Bartosz Sokół - Functional developer in object oriented world - how F#...
[4DEV] Bartosz Sokół - Functional developer in object oriented world - how F#...
PROIDEA
(3) cpp procedural programming
(3) cpp procedural programming
Nico Ludwig
A1 spyder variables_operators_nptel_pds1_sol
A1 spyder variables_operators_nptel_pds1_sol
malasumathi
Python variable assignments | JNTUA | R19 | UNIT 1
Python variable assignments | JNTUA | R19 | UNIT 1
FabMinds
C++ Training
C++ Training
SubhendraBasu5
DIG1108 Lesson 8
DIG1108 Lesson 8
vc-dig1108-fall-2013
Basic structure of C++ program
Basic structure of C++ program
matiur rahman
C language function
C language function
Rajamohan Sangaramoorthy
C++ Preprocessor Directives
C++ Preprocessor Directives
Wasif Altaf
Functional Programming in C# and F#
Functional Programming in C# and F#
Alfonso Garcia-Caro
Infix to postfix
Infix to postfix
Saeed Farooqi
F# for Scala developers
F# for Scala developers
Alfonso Garcia-Caro
Evaluation of postfix expression
Evaluation of postfix expression
Akhil Ahuja
17432 object oriented programming
17432 object oriented programming
soni_nits
Cpp
Cpp
AnanthuGanesh3
Loop optimization
Loop optimization
Vivek Gandhi
Postfix Notation | Compiler design
Postfix Notation | Compiler design
Shamsul Huda
What's hot
(20)
Boolean and conditional logic in Python
Boolean and conditional logic in Python
Towards an SMT-based approach for Quantitative Information Flow
Towards an SMT-based approach for Quantitative Information Flow
Polymorphismupload
Polymorphismupload
[4DEV] Bartosz Sokół - Functional developer in object oriented world - how F#...
[4DEV] Bartosz Sokół - Functional developer in object oriented world - how F#...
(3) cpp procedural programming
(3) cpp procedural programming
A1 spyder variables_operators_nptel_pds1_sol
A1 spyder variables_operators_nptel_pds1_sol
Python variable assignments | JNTUA | R19 | UNIT 1
Python variable assignments | JNTUA | R19 | UNIT 1
C++ Training
C++ Training
DIG1108 Lesson 8
DIG1108 Lesson 8
Basic structure of C++ program
Basic structure of C++ program
C language function
C language function
C++ Preprocessor Directives
C++ Preprocessor Directives
Functional Programming in C# and F#
Functional Programming in C# and F#
Infix to postfix
Infix to postfix
F# for Scala developers
F# for Scala developers
Evaluation of postfix expression
Evaluation of postfix expression
17432 object oriented programming
17432 object oriented programming
Cpp
Cpp
Loop optimization
Loop optimization
Postfix Notation | Compiler design
Postfix Notation | Compiler design
Viewers also liked
1 phuong phap ban hang va cham soc khach hang
1 phuong phap ban hang va cham soc khach hang
duongdinhson
Eivissa
Eivissa
diana
Gm대우 최종
Gm대우 최종
HyunChul Choi
Entregable modulo 2
Entregable modulo 2
Rogelio Pincheira
置喙De智慧
置喙De智慧
MBROL
Metropolitan drinks list
Metropolitan drinks list
Peter Dundas
Mbr 000 Live
Mbr 000 Live
MBROL
Oranmor whisky list
Oranmor whisky list
Peter Dundas
Simple.Data intro slides
Simple.Data intro slides
Mark Rendle
Bgv spreuken
Bgv spreuken
Annemiekelos
Viewers also liked
(10)
1 phuong phap ban hang va cham soc khach hang
1 phuong phap ban hang va cham soc khach hang
Eivissa
Eivissa
Gm대우 최종
Gm대우 최종
Entregable modulo 2
Entregable modulo 2
置喙De智慧
置喙De智慧
Metropolitan drinks list
Metropolitan drinks list
Mbr 000 Live
Mbr 000 Live
Oranmor whisky list
Oranmor whisky list
Simple.Data intro slides
Simple.Data intro slides
Bgv spreuken
Bgv spreuken
Similar to Functional Alchemy
London F-Sharp User Group : Don Syme on F# - 09/09/2010
London F-Sharp User Group : Don Syme on F# - 09/09/2010
Skills Matter
Tdd is not about testing
Tdd is not about testing
Gianluca Padovani
CSharp.ppt
CSharp.ppt
SRIRAMAMURTHYKARUMUR1
Dutch PHP Conference 2013: Distilled
Dutch PHP Conference 2013: Distilled
Zumba Fitness - Technology Team
MMBJ Shanzhai Culture
MMBJ Shanzhai Culture
MobileMonday Beijing
Washington Practitioners Significant Changes To Rpc 1.5
Washington Practitioners Significant Changes To Rpc 1.5
Oregon Law Practice Management
Paulo Freire Pedagpogia 1
Paulo Freire Pedagpogia 1
Alejandra Perez
Jerry Shea Resume And Addendum 5 2 09
Jerry Shea Resume And Addendum 5 2 09
gshea11
Majlis Persaraan Pn.Hjh.Normah bersama guru-guru Sesi Petang
Majlis Persaraan Pn.Hjh.Normah bersama guru-guru Sesi Petang
Imsamad
Agapornis Mansos - www.criadourosudica.blogspot.com
Agapornis Mansos - www.criadourosudica.blogspot.com
Antonio Silva
LoteríA Correcta
LoteríA Correcta
guest4dfcdf6
Cpp17 and Beyond
Cpp17 and Beyond
ComicSansMS
F# and the DLR
F# and the DLR
Richard Minerich
RSpec: What, How and Why
RSpec: What, How and Why
Ratan Sebastian
Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)
Babul Mirdha
Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)
lennartkats
F# and functional programming
F# and functional programming
ramikarjalainen
Functional programming in C++
Functional programming in C++
Alexandru Bolboaca
Basics of Python Programming in one PDF File.pdf
Basics of Python Programming in one PDF File.pdf
KrizanReyFamindalan
Introduction to TensorFlow 2.0
Introduction to TensorFlow 2.0
Databricks
Similar to Functional Alchemy
(20)
London F-Sharp User Group : Don Syme on F# - 09/09/2010
London F-Sharp User Group : Don Syme on F# - 09/09/2010
Tdd is not about testing
Tdd is not about testing
CSharp.ppt
CSharp.ppt
Dutch PHP Conference 2013: Distilled
Dutch PHP Conference 2013: Distilled
MMBJ Shanzhai Culture
MMBJ Shanzhai Culture
Washington Practitioners Significant Changes To Rpc 1.5
Washington Practitioners Significant Changes To Rpc 1.5
Paulo Freire Pedagpogia 1
Paulo Freire Pedagpogia 1
Jerry Shea Resume And Addendum 5 2 09
Jerry Shea Resume And Addendum 5 2 09
Majlis Persaraan Pn.Hjh.Normah bersama guru-guru Sesi Petang
Majlis Persaraan Pn.Hjh.Normah bersama guru-guru Sesi Petang
Agapornis Mansos - www.criadourosudica.blogspot.com
Agapornis Mansos - www.criadourosudica.blogspot.com
LoteríA Correcta
LoteríA Correcta
Cpp17 and Beyond
Cpp17 and Beyond
F# and the DLR
F# and the DLR
RSpec: What, How and Why
RSpec: What, How and Why
Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)
Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)
F# and functional programming
F# and functional programming
Functional programming in C++
Functional programming in C++
Basics of Python Programming in one PDF File.pdf
Basics of Python Programming in one PDF File.pdf
Introduction to TensorFlow 2.0
Introduction to TensorFlow 2.0
Recently uploaded
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
apidays
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
UiPathCommunity
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Khushali Kathiriya
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Rustici Software
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
Zilliz
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Nanddeep Nachan
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
apidays
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
Sandro Moreira
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Jeffrey Haguewood
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
rafiqahmad00786416
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Remote DBA Services
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Orbitshub
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Angeliki Cooney
Recently uploaded
(20)
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Functional Alchemy
1.
Functional Alchemy Tricks
to keep your C# DRY Mark Rendle Principal Architect Dot Net Solutions @markrendle
2.
Get all the
code:bit.ly/functionalalchemy(bitbucket.org)
3.
Functional?
4.
First-class functions
5.
Action<T>Func<T, Tresult>
6.
Higher-order functions
7.
Lazy evaluation
8.
Immutability
9.
Purity
10.
Tail-call optimisation
11.
So, C# then
It's an Object Oriented language
12.
Object Orientation When
all you've got is a hammer…
13.
Object Orientation …everything
looks like nails
14.
Demo:WPF Commands
15.
Tuples
16.
Tuple<T1,T2>
17.
F# TryParse success,
i = int.TryParse(“42”)
18.
C# TryParse int
i;bool success = int.TryParse(“42”, out i);
19.
C# TryParse var
tuple = IntTryParse(“42”);if (tuple.Item1) { ... }
20.
Demo:Tuple extensions
21.
Fixing C# and
.NET (because it’s borked)
22.
var handler =
MyEvent;if (handler != null){handler(this, EventArgs.Empty);}
23.
Demo:EventHandler.Raise
24.
ImprovingException Handling
25.
try{File.OpenRead(“foo.txt”);}catch (FileNotFoundException ex){Error(ex.Message);}catch
(DirectoryNotFoundException ex){Error(ex.Message);}catch (UnauthorizedAccessException ex){Error(ex.Message);}
26.
Demo:Multi-exception Catch
27.
Augmentingfunctions
28.
Demo:Caching deterministicmethods
29.
“Event-based Async Pattern”
void ClickHandler() { SomeService.MethodCompleted += CompletedHandler; SomeService.MethodAsync(); } void CompletedHandler(object sender, MethodCompletedEventArgs e) { // Do something with e }
30.
Demo:Event-based AsyncPattern implementation
31.
Function Composition
32.
Demo:Composing Cachingand Async
Pattern
33.
That’s it. Download
the code: bit.ly/functionalalchemy Further reading: LINQ to Objects Using C# 4.0 (Magennis) Real World Functional Programming (Petricek/Skeet) Actual functional programming: Learn F#
Editor's Notes