Functional.Programming.in.C.Sharp.Classic.Programming.Techniques.eBook-TRN.pdf

(7200 KB) Pobierz
812445487.031.png
PROFESSIONAL
FUNCTIONAL PROGRAMMING IN C#
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
PART I
INTRODUCTION TO FUNCTIONAL PROGRAMMING
A Look at Functional Programming History . . . . . . . . . . . . . . . . . . . . . . . . 3
CHAPTER 1
Putting Functional Programming into a Modern Context . . . . . . . . . . . . . 9
CHAPTER 2
PART II
C# FOUNDATIONS OF FUNCTIONAL PROGRAMMING
Functions, Delegates, and Lambda Expressions . . . . . . . . . . . . . . . . . . . .17
CHAPTER 3
Flexible Typing with Generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
CHAPTER 4
Lazy Listing with Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
CHAPTER 5
Encapsulating Data in Closures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
CHAPTER 6
Code Is Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
CHAPTER 7
PART III
IMPLEMENTING WELL-KNOWN FUNCTIONAL
TECHNIQUES IN C#
Currying and Partial Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
CHAPTER 8
Lazy Evaluation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
CHAPTER 9
Caching Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
CHAPTER 10
Calling Yourself. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
CHAPTER 11
Standard Higher Order Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
CHAPTER 12
Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
CHAPTER 13
Constructing Functions from Functions. . . . . . . . . . . . . . . . . . . . . . . . . . 149
CHAPTER 14
Optional Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
CHAPTER 15
Keeping Data from Changing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
CHAPTER 16
Monads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
CHAPTER 17
Continues
812445487.032.png 812445487.033.png 812445487.034.png 812445487.001.png 812445487.002.png 812445487.003.png
PART IV
PUTTING FUNCTIONAL PROGRAMMING INTO ACTION
CHAPTER 18
Integrating Functional Programming Approaches. . . . . . . . . . . . . . . . . 209
CHAPTER 19
The MapReduce Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
CHAPTER 20
Applied Functional Modularization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
CHAPTER 21
Existing Projects Using Functional Techniques . . . . . . . . . . . . . . . . . . . 247
INDEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
812445487.004.png 812445487.005.png 812445487.006.png 812445487.007.png 812445487.008.png 812445487.009.png
PROFESSIONAL
Functional Programming in C#
CLASSIC PROGRAMMING TECHNIQUES
FOR MODERN PROJECTS
Oliver Sturm
812445487.010.png 812445487.011.png 812445487.012.png 812445487.013.png 812445487.014.png 812445487.015.png 812445487.016.png 812445487.017.png 812445487.018.png 812445487.019.png 812445487.020.png 812445487.021.png 812445487.022.png 812445487.023.png 812445487.024.png 812445487.025.png 812445487.026.png 812445487.027.png 812445487.028.png 812445487.029.png 812445487.030.png
Zgłoś jeśli naruszono regulamin