Functional Programming in C# - Sturm_ Oliver.pdf

(90294 KB) Pobierz
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
878421248.103.png
878421248.114.png 878421248.125.png 878421248.136.png 878421248.001.png 878421248.012.png 878421248.023.png 878421248.034.png 878421248.045.png 878421248.056.png 878421248.059.png 878421248.060.png 878421248.061.png 878421248.062.png 878421248.063.png 878421248.064.png 878421248.065.png 878421248.066.png 878421248.067.png 878421248.068.png 878421248.069.png 878421248.070.png 878421248.071.png 878421248.072.png 878421248.073.png 878421248.074.png 878421248.075.png 878421248.076.png 878421248.077.png 878421248.078.png 878421248.079.png 878421248.080.png 878421248.081.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
878421248.082.png 878421248.083.png 878421248.084.png 878421248.085.png 878421248.086.png 878421248.087.png 878421248.088.png 878421248.089.png 878421248.090.png 878421248.091.png 878421248.092.png 878421248.093.png 878421248.094.png 878421248.095.png 878421248.096.png 878421248.097.png 878421248.098.png 878421248.099.png 878421248.100.png 878421248.101.png 878421248.102.png 878421248.104.png 878421248.105.png 878421248.106.png 878421248.107.png 878421248.108.png 878421248.109.png 878421248.110.png 878421248.111.png 878421248.112.png 878421248.113.png 878421248.115.png 878421248.116.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
878421248.117.png 878421248.118.png 878421248.119.png 878421248.120.png 878421248.121.png 878421248.122.png 878421248.123.png 878421248.124.png 878421248.126.png 878421248.127.png 878421248.128.png 878421248.129.png 878421248.130.png 878421248.131.png 878421248.132.png 878421248.133.png 878421248.134.png 878421248.135.png 878421248.137.png 878421248.138.png 878421248.139.png 878421248.140.png 878421248.141.png 878421248.142.png 878421248.143.png 878421248.144.png 878421248.145.png 878421248.146.png 878421248.002.png 878421248.003.png 878421248.004.png 878421248.005.png
PROFESSIONAL
Functional Programming in C#
CLASSIC PROGRAMMING TECHNIQUES
FOR MODERN PROJECTS
Oliver Sturm
878421248.006.png 878421248.007.png 878421248.008.png 878421248.009.png 878421248.010.png 878421248.011.png 878421248.013.png 878421248.014.png 878421248.015.png 878421248.016.png 878421248.017.png 878421248.018.png 878421248.019.png 878421248.020.png 878421248.021.png 878421248.022.png 878421248.024.png 878421248.025.png 878421248.026.png 878421248.027.png 878421248.028.png 878421248.029.png 878421248.030.png 878421248.031.png 878421248.032.png 878421248.033.png 878421248.035.png 878421248.036.png 878421248.037.png 878421248.038.png 878421248.039.png 878421248.040.png 878421248.041.png 878421248.042.png 878421248.043.png 878421248.044.png 878421248.046.png 878421248.047.png 878421248.048.png 878421248.049.png 878421248.050.png 878421248.051.png 878421248.052.png 878421248.053.png 878421248.054.png 878421248.055.png 878421248.057.png 878421248.058.png
Zgłoś jeśli naruszono regulamin