First Class and Higher Order Functions: C++ Does C++ functions are first-class citizens and
22
Nested function: Haskell
23
Nested Function: C++
24
Anonymous Function: Haskell
25
Closure: Haskell
26
Closure: C++
27
Partial application: Haskell
28
Partial Application: C++
29
Currying: Haskell
30
Recursion: Factorial Implementations
31
Tail Call Optimization: C++
32
Types System: Haskell and C++
33
Type Inference: Haskell
34
Type Inference: C++
35
Lazy Evaluation: Haskell and C++
36
Lazy Evaluation: More C++ (Triple)
37
Lazy Evaluation: More C++ (Functions)
38
Lazy Evaluation: More C++ (Susp)
39
C++ Lazy Evaluation Summary
40
Immutable Data: Haskell
41
Immutable and Persistent Data: C++ Example
42
Algebraic Data Types: Haskell What is an Algebraic Data Type?
43
Algebraic Data Types: C++
44
Pattern Matching: Haskell
45
Pattern Matching: C++ Mach7 Example
46
Substitution Model: Haskell
47
Substitution Model: C++
48
Polymorphic Types: Haskell
49
Type Classes and Overloading: Haskell
50
Polymorphism: C++
51
List Comprehension: C++
52
Automatic Memory Management: Haskell
53
Automatic Memory Management: C++
54
Category Concepts: Functor, Applicative, Monad
55
Category Concepts: Functor in Haskell
56
Category Concepts: Functor in C++
57
Category Concepts: Applicative in Haskell
Description:
Explore functional programming concepts and their implementation in C++ through this comprehensive conference talk from code::dive 2016. Delve into the fundamentals of functional programming, comparing Haskell and C++ implementations of key features such as pure functions, higher-order functions, closures, and lazy evaluation. Learn about algebraic data types, pattern matching, and category theory concepts like functors and applicatives. Gain insights into how C++, a multi-paradigm language, supports functional programming constructs and techniques. Discover practical examples and code demonstrations that illustrate the application of functional programming principles in C++, enhancing your understanding of this powerful programming paradigm.