Library Logo
Normal view MARC view ISBD view

Professional functional programming in C# : classic programming techniques for modern projects /

by Sturm, Oliver.
Material type: materialTypeLabelBookPublisher: Chichester, West Sussex, U.K. : Wiley, 2011Description: xvii, 270 p. : ill. ; 24 cm.ISBN: 9780470744581; 0470744588; 9780470970287 (ebk); 9780470971109 (ebk); 9780470971093 (ebk).Other title: Functional programming in C#.Subject(s): C# (Computer program language) | Functional programming (Computer science)Online resources: Cover image | Contributor biographical information | Publisher description | Table of contents only
Contents:
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
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
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
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.
Summary: "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."-- Provided by publisher.
Tags from this library: No tags from this library for this title. Add tag(s)
Log in to add tags.
    average rating: 0.0 (0 votes)
Item type Current location Collection Call number Status Date due Barcode
Books Books Dhaka University Science Library
General Stacks
Non Fiction 005.114 STP (Browse shelf) Available 476028

Includes index.

Machine generated contents note: ch. 1 A Look At Functional Programming History -- What Is Functional Programming? -- Functional Languages -- The Relationship to Object Oriented Programming -- Summary -- ch. 2 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 -- ch. 3 Functions, Delegates, And Lambda Expressions -- Functions and Methods -- Reusing Functions -- Anonymous Functions and Lambda Expressions -- Extension Methods -- Referential Transparency -- Summary -- ch. 4 Flexible Typing With Generics -- Generic Functions -- Generic Classes -- Constraining Types -- Other Generic Types -- Covariance and Contravariance -- Summary -- ch. 5 Lazy Listing With Iterators -- The Meaning of Laziness -- Enumerating Things with .NET -- Implementing Iterator Functions -- Returning IEnumerator -- Chaining Iterators -- Summary

Ch. 6 Encapsulating Data In Closures -- Constructing Functions Dynamically -- The Problem with Scope -- How Closures Work -- Summary -- ch. 7 Code Is Data -- Expression Trees in .NET -- Analyzing Expressions -- Generating Expressions -- .NET 4.0 Specifics -- Summary -- ch. 8 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 -- ch. 9 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 -- ch. 10 Caching Techniques -- The Need to Remember -- Precomputation -- Memoization -- Deep Memoization -- Considerations on Memoization -- Summary -- ch. 11 Calling Yourself -- Recursion in C# -- Tail Recursion -- Accumulator Passing Style -- Continuation Passing Style -- Indirect Recursion -- Summary

Ch. 12 Standard Higher Order Functions -- Applying Operations: Map -- Using Criteria: Filter -- Accumulating: Fold -- Map, Filter, and Fold in LINQ -- Standard Higher Order Functions -- Summary -- ch. 13 Sequences -- Understanding List Comprehensions -- A Functional Approach to Iterators -- Ranges -- Restrictions -- Summary -- ch. 14 Constructing Functions From Functions -- Composing Functions -- Advanced Partial Application -- Combining Approaches -- Summary -- ch. 15 Optional Values -- The Meaning of Nothing -- Implementing Option(al) Values -- Summary -- ch. 16 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 -- ch. 17 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. 18 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 -- ch. 19 The MapReduce Pattern -- Implementing MapReduce -- Abstracting the Problem -- Summary -- ch. 20 Applied Functional Modularization -- Executing SQL Code from an Application -- Rewriting the Function with Partial Application and Precomputation in Mind -- Summary -- ch. 21 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.

"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."-- Provided by publisher.

There are no comments for this item.

Log in to your account to post a comment.
Last Updated on September 15, 2019
© Dhaka University Library. All Rights Reserved|Staff Login