Sturm, Oliver.
Professional functional programming in C# : classic programming techniques for modern projects / Functional programming in C# Oliver Sturm. - Chichester, West Sussex, U.K. : Wiley, 2011. - xvii, 270 p. : ill. ; 24 cm.
Includes index.
A Look At Functional Programming History -- What Is Functional Programming? -- Functional Languages -- The Relationship to Object Oriented Programming -- Summary -- Putting Functional Programming Into A Modern Context -- Managing Side Effects -- Agile Programming Methodologies -- Declarative Programming -- Functional Programming Is a Mindset -- Is Functional Programming in C# a Good Idea? -- Summary -- Functions, Delegates, And Lambda Expressions -- Functions and Methods -- Reusing Functions -- Anonymous Functions and Lambda Expressions -- Extension Methods -- Referential Transparency -- Summary -- Flexible Typing With Generics -- Generic Functions -- Generic Classes -- Constraining Types -- Other Generic Types -- Covariance and Contravariance -- Summary -- Lazy Listing With Iterators -- The Meaning of Laziness -- Enumerating Things with .NET -- Implementing Iterator Functions -- Returning IEnumerator -- Chaining Iterators -- Summary Machine generated contents note: ch. 1 ch. 2 ch. 3 ch. 4 ch. 5 Encapsulating Data In Closures -- Constructing Functions Dynamically -- The Problem with Scope -- How Closures Work -- Summary -- Code Is Data -- Expression Trees in .NET -- Analyzing Expressions -- Generating Expressions -- .NET 4.0 Specifics -- Summary -- Currying And Partial Application -- Decoupling Parameters -- Manual Currying -- Automatic Currying -- Calling Curried Functions -- The Class Context -- What FCSlib Contains -- Calling Parts of Functions -- Why Parameter Order Matters -- Summary -- Lazy Evaluation -- What's Good about Being Lazy? -- Passing Functions -- Explicit Lazy Evaluation -- Comparing the Lazy Evaluation Techniques -- Usability -- Efficiency -- How Lazy Can You Be? -- Summary -- Caching Techniques -- The Need to Remember -- Precomputation -- Memoization -- Deep Memoization -- Considerations on Memoization -- Summary -- Calling Yourself -- Recursion in C# -- Tail Recursion -- Accumulator Passing Style -- Continuation Passing Style -- Indirect Recursion -- Summary Ch. 6 ch. 7 ch. 8 ch. 9 ch. 10 ch. 11 Standard Higher Order Functions -- Applying Operations: Map -- Using Criteria: Filter -- Accumulating: Fold -- Map, Filter, and Fold in LINQ -- Standard Higher Order Functions -- Summary -- Sequences -- Understanding List Comprehensions -- A Functional Approach to Iterators -- Ranges -- Restrictions -- Summary -- Constructing Functions From Functions -- Composing Functions -- Advanced Partial Application -- Combining Approaches -- Summary -- Optional Values -- The Meaning of Nothing -- Implementing Option(al) Values -- Summary -- Keeping Data From Changing -- Change Is Good[ -- ]Not! -- False Assumptions -- Being Static Is Good -- A Matter of Depth -- Cloning -- Automatic Cloning -- Implementing Immutable Container Data Structures -- Linked List -- Queue -- Unbalanced Binary Tree -- Red/Black Tree -- Alternatives to Persistent Data Types -- Summary -- Monads -- What's in a Typeclass? -- What's in a Monad? -- Why Do a Whole Abstraction? -- A Second Monad: Logging -- Syntactic Sugar -- Binding with SelectMany? -- Summary Ch. 12 ch. 13 ch. 14 ch. 15 ch. 16 ch. 17 Integrating Functional Programming Approaches -- Refactoring -- List Filtering with a Windows Forms UI -- Calculating Mandelbrot Fractals -- Writing New Code -- Use Static Methods -- Prefer Anonymous Methods Over Named Ones -- Prefer Higher Order Functions over Manual Algorithm Implementation -- Prefer Immutable Data -- Watch Behavior Implementation in Classes -- Finding Likely Candidates for Functional Programming -- Shades of Grey -- Using What's There -- Summary -- The MapReduce Pattern -- Implementing MapReduce -- Abstracting the Problem -- Summary -- Applied Functional Modularization -- Executing SQL Code from an Application -- Rewriting the Function with Partial Application and Precomputation in Mind -- Summary -- Existing Projects Using Functional Techniques -- The .NET Framework -- LINQ -- LINQ to Objects -- LINQ to a Query Backend -- Parallelization -- Google MapReduce and Its Implementations -- NUnit -- Summary. Ch. 18 ch. 19 ch. 20 ch. 21
"Take advantage of the growing trend in functional programming. C# is the number-one language used by.NET developers and one of the most popular programming languages in the world. It has many built-in functional programming features, but most are complex and little understood. With the shift to functional programming increasing at a rapid pace, you need to know how to leverage your existing skills to take advantage of this trend. Functional Programming in C# leads you along a path that begins with the historic value of functional ideas. Inside, C# MVP and functional programming expert Oliver Sturm explains the details of relevant language features in C# and describes theory and practice of using functional techniques in C#, including currying, partial application, composition, memoization, and monads. Next, he provides practical and versatile examples, which combine approaches to solve problems in several different areas, including complex scenarios like concurrency and high-performance calculation frameworks as well as simpler use cases like Web Services and business logic implementation... Shows how C# developers can leverage their existing skills to take advantage of functional programming. Uses very little math theory and instead focuses on providing solutions to real development problems with functional programming methods, unlike traditional functional programming titles. Includes examples ranging from simple cases to more complex scenarios.. Let Functional Programming in C# show you how to get in front of the shift toward functional programming."--
9780470744581 0470744588 9780470970287 (ebk) 9780470971109 (ebk) 9780470971093 (ebk)
2011009321
C# (Computer program language)
Functional programming (Computer science)
QA76.73.C154 / S78 2011
005.114 / STP
Professional functional programming in C# : classic programming techniques for modern projects / Functional programming in C# Oliver Sturm. - Chichester, West Sussex, U.K. : Wiley, 2011. - xvii, 270 p. : ill. ; 24 cm.
Includes index.
A Look At Functional Programming History -- What Is Functional Programming? -- Functional Languages -- The Relationship to Object Oriented Programming -- Summary -- Putting Functional Programming Into A Modern Context -- Managing Side Effects -- Agile Programming Methodologies -- Declarative Programming -- Functional Programming Is a Mindset -- Is Functional Programming in C# a Good Idea? -- Summary -- Functions, Delegates, And Lambda Expressions -- Functions and Methods -- Reusing Functions -- Anonymous Functions and Lambda Expressions -- Extension Methods -- Referential Transparency -- Summary -- Flexible Typing With Generics -- Generic Functions -- Generic Classes -- Constraining Types -- Other Generic Types -- Covariance and Contravariance -- Summary -- Lazy Listing With Iterators -- The Meaning of Laziness -- Enumerating Things with .NET -- Implementing Iterator Functions -- Returning IEnumerator -- Chaining Iterators -- Summary Machine generated contents note: ch. 1 ch. 2 ch. 3 ch. 4 ch. 5 Encapsulating Data In Closures -- Constructing Functions Dynamically -- The Problem with Scope -- How Closures Work -- Summary -- Code Is Data -- Expression Trees in .NET -- Analyzing Expressions -- Generating Expressions -- .NET 4.0 Specifics -- Summary -- Currying And Partial Application -- Decoupling Parameters -- Manual Currying -- Automatic Currying -- Calling Curried Functions -- The Class Context -- What FCSlib Contains -- Calling Parts of Functions -- Why Parameter Order Matters -- Summary -- Lazy Evaluation -- What's Good about Being Lazy? -- Passing Functions -- Explicit Lazy Evaluation -- Comparing the Lazy Evaluation Techniques -- Usability -- Efficiency -- How Lazy Can You Be? -- Summary -- Caching Techniques -- The Need to Remember -- Precomputation -- Memoization -- Deep Memoization -- Considerations on Memoization -- Summary -- Calling Yourself -- Recursion in C# -- Tail Recursion -- Accumulator Passing Style -- Continuation Passing Style -- Indirect Recursion -- Summary Ch. 6 ch. 7 ch. 8 ch. 9 ch. 10 ch. 11 Standard Higher Order Functions -- Applying Operations: Map -- Using Criteria: Filter -- Accumulating: Fold -- Map, Filter, and Fold in LINQ -- Standard Higher Order Functions -- Summary -- Sequences -- Understanding List Comprehensions -- A Functional Approach to Iterators -- Ranges -- Restrictions -- Summary -- Constructing Functions From Functions -- Composing Functions -- Advanced Partial Application -- Combining Approaches -- Summary -- Optional Values -- The Meaning of Nothing -- Implementing Option(al) Values -- Summary -- Keeping Data From Changing -- Change Is Good[ -- ]Not! -- False Assumptions -- Being Static Is Good -- A Matter of Depth -- Cloning -- Automatic Cloning -- Implementing Immutable Container Data Structures -- Linked List -- Queue -- Unbalanced Binary Tree -- Red/Black Tree -- Alternatives to Persistent Data Types -- Summary -- Monads -- What's in a Typeclass? -- What's in a Monad? -- Why Do a Whole Abstraction? -- A Second Monad: Logging -- Syntactic Sugar -- Binding with SelectMany? -- Summary Ch. 12 ch. 13 ch. 14 ch. 15 ch. 16 ch. 17 Integrating Functional Programming Approaches -- Refactoring -- List Filtering with a Windows Forms UI -- Calculating Mandelbrot Fractals -- Writing New Code -- Use Static Methods -- Prefer Anonymous Methods Over Named Ones -- Prefer Higher Order Functions over Manual Algorithm Implementation -- Prefer Immutable Data -- Watch Behavior Implementation in Classes -- Finding Likely Candidates for Functional Programming -- Shades of Grey -- Using What's There -- Summary -- The MapReduce Pattern -- Implementing MapReduce -- Abstracting the Problem -- Summary -- Applied Functional Modularization -- Executing SQL Code from an Application -- Rewriting the Function with Partial Application and Precomputation in Mind -- Summary -- Existing Projects Using Functional Techniques -- The .NET Framework -- LINQ -- LINQ to Objects -- LINQ to a Query Backend -- Parallelization -- Google MapReduce and Its Implementations -- NUnit -- Summary. Ch. 18 ch. 19 ch. 20 ch. 21
"Take advantage of the growing trend in functional programming. C# is the number-one language used by.NET developers and one of the most popular programming languages in the world. It has many built-in functional programming features, but most are complex and little understood. With the shift to functional programming increasing at a rapid pace, you need to know how to leverage your existing skills to take advantage of this trend. Functional Programming in C# leads you along a path that begins with the historic value of functional ideas. Inside, C# MVP and functional programming expert Oliver Sturm explains the details of relevant language features in C# and describes theory and practice of using functional techniques in C#, including currying, partial application, composition, memoization, and monads. Next, he provides practical and versatile examples, which combine approaches to solve problems in several different areas, including complex scenarios like concurrency and high-performance calculation frameworks as well as simpler use cases like Web Services and business logic implementation... Shows how C# developers can leverage their existing skills to take advantage of functional programming. Uses very little math theory and instead focuses on providing solutions to real development problems with functional programming methods, unlike traditional functional programming titles. Includes examples ranging from simple cases to more complex scenarios.. Let Functional Programming in C# show you how to get in front of the shift toward functional programming."--
9780470744581 0470744588 9780470970287 (ebk) 9780470971109 (ebk) 9780470971093 (ebk)
2011009321
C# (Computer program language)
Functional programming (Computer science)
QA76.73.C154 / S78 2011
005.114 / STP