Over a million developers have joined DZone.

What is Functional Programming? Part 5, Bindings

DZone's Guide to

What is Functional Programming? Part 5, Bindings

· ·
Free Resource

N.B. this is unrelated to the concept of bindings in Silverlight and WPF.


One of my aha moments in learning F# occurred while I was reading Real World Functional Programming. Specifically, it was when the meaning of the let keyword really clicked. Before I explain, here are couple of samples:

let x = 42

let multiply a b = a * b

I was predisposed to interpret let as merely declaring a variable. but you will recall from the first post that we made a distinction between working with mutable “variables” and immutable “values”. Functional languages eschew mutability.

If you look up let in the official documentation and you’ll see that it is called a binding and it is very clearly described:

A binding associates an identifier with a value or function. You use the let keyword to bind a name to a value or function.

This also aligns with the concept of referential transparency we mentioned way back in the first post.

This may seem obvious or even a subtle distinction to make, but I think it is fundamental in understanding the functional approach.

Update: This next part is not technically accurate and I do not mean to imply that it is. Rather, this is how my poetic eye has begun to see the code.

After this clicked with me, I also to think of

let x = 42

as a function with no arguments that returns a value of 42. The distinction between binding to a value and binding to a function blurs (for me). It is the Marriage of Value and Function.

Next stop, pattern matching in F#.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}