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
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
Paulo Freire Pedagpogia 1
Paulo Freire Pedagpogia 1
Alejandra Perez
Washington Practitioners Significant Changes To Rpc 1.5
Washington Practitioners Significant Changes To Rpc 1.5
Oregon Law Practice Management
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
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
Paulo Freire Pedagpogia 1
Paulo Freire Pedagpogia 1
Washington Practitioners Significant Changes To Rpc 1.5
Washington Practitioners Significant Changes To Rpc 1.5
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
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Scott Keck-Warren
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Igalia
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
soniya singh
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
naman860154
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
The Digital Insurer
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
Pixlogix Infotech
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Delhi Call girls
Slack Application Development 101 Slides
Slack Application Development 101 Slides
praypatel2
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
gurkirankumar98700
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
BookNet Canada
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Allon Mureinik
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
Ridwan Fadjar
Recently uploaded
(20)
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Slack Application Development 101 Slides
Slack Application Development 101 Slides
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
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