domingo, 17 de enero de 2016

LINQ Recipe No. 1-1: Introduction to LINQ Programming Model - Functional Programming

Contents

1. Introduction
2. Keywords
3. Problem
4. Solution
5. Solution's Discussion
6. Practice: Another Functional Programming Example
7. Conclusions
8. Literature & Links

1. Introduction

Programmers need to deal with data from multiple sources every time. LINQ is a Microsoft .NET Framework component designed to facilitate the interaction and manipulation of data. This data can be located in any of the possible forms; for example: working memory, database, and XML. So, this makes a amazing opportunity for writing recipes about this powerful data manipulation language. In this first recipe a general overview of the LINQ programming model will be presented; this will allow the programmer to understand the fundamentals, and he or she will be able to comprehend the mathematical base for writing LINQ expressions.

2. Keywords

  • .NET
  • Composite function
  • Data
  • Function
  • LINQ
  • Programming
  • Co

3. Problem

What is the foundation for LINQ component?

4. Solution

The Microsoft .NET Framework LINQ component is based on functional programming, an old programming technique used to manipulate data in an function's argument composited  or combined way.

5. Solution Discussion

5.1 What is functional programming

When a programmer deal with data, he or she uses the built-in functions to transform data. This transformation data process regularly demands the usage of intermediate functions (Mukherjee, 2014). Now, how the programmer model this data tranformation with intermediate functions? It is easy. What the programmer needs to do is simple: write compound functions and glue them together. This practice is called, according to Mukherjee (2004), functional programming.

Functional programming technique comes from ancient programming times ("Functional programming", 2016). It is based on the mathematical concept of composite function. This can be illustrated as follows:

f(x) = x + 1
g(x) = x + 2
h(x, y) = x == y


These functions can be composited: function arguments are functions themselves (Mkherjee, 2014). The Illustration 1 shows graphically this basic concept:
Composite function
Illustration 1. Composite function ("Algebra/Functions", 2016).

Or, 
Illustration 2. Composite function.
Or more formally:

f(g(x))

which is equal to 

f(g(x)) = x + 2 + 1 = x + 3

Analogically:

g(f(x)) = x + 1 + 2 = x + 3

6. Practice: Another Functional Programming Example

What is the evaluation result of h(f.g, g.f) == true for all values of x?

Solution:

z(f.g) = z(x + 3)

and

z(g.f) = z(x + 3)

Then if any value is assigned for x, the evaluates equates to true.

7. Conclusions

In this opportunity the programmer has had the opportunity to understand the LINQ's programming model: data transformation by a subsequent function calls, which is called functional programming. This model gives an intuition about LINQ internal data manipulation mechanisms as we are going to see in practice in the coming recipes. The next LINQ recipe will be focused on how to use Func<> in C# for presenting functions.

8. Literature and Links

Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
Algebra Functions (2016, January 17). Retrieved from: https://en.wikibooks.org/wiki/Algebra/Functions.
Functional programming - Wikipedia, the free encyclopedia (2016, January 17). Retrieved from: https://en.wikipedia.org/wiki/Functional_programming.


V