DEV Community

Cover image for Explaining: Pure Functions
Sean
Sean

Posted on

2

Explaining: Pure Functions

Intro

Have you ever heard that your code is poorly written, or that I won't work under different circumstances. That it requires lots of special handling that isn't needed. Bad news: you're in a tough spot, good news: there's a way out.

Functional Programming, What Is It?

Functional Programming(FP) is programming that is composed of pure functions, absence of side affects, avoiding mutable data, and imperative like programming to build software.

You lost me.

Basically, programming that avoids things like http calls and whatnot to make side affects avoidable and make useful, predictable code so it can be used over and over without concern or issues.

Pure Functions

Pure Functions are basically the pinnacle and heart of functional programming.

What Does That Mean?

Pure Functions contain all the requirements for FP, this means that if you follow most of the guidelines for pure functions you'll be able to understand FP, but this post isn't about FP as much as it is about PF(I know I turned it around on you!).

How Are They Used?

Pure Functions have many practical uses. Automation is one place where they are key. The idea of automation already involves some of the ideology of pure functions. Continuous use with no side effects, and output only being determined by the input.

Uh... English please.

Simply, reusability, and the input being what determines the output. Here's an example, Drake hit it!

Okay, I understand most of what you're saying but what's a sid effect?

Here's a more professional explanation: In computer science, an operation, function or expression is said to have a side effect if it modifies some state variable value(s) outside its local environment, that is to say has an observable effect besides returning a value (the main effect) to the invoker of the operation.

I don't get it.

Go back to the Drake example. There you'll see that in the first example the actual list is mutated in the forEach method's parenthesis. The code uses the push method to change the contents of the list. That is kind of a side effect, because if I wanted the original list it would be lost. In the second example the map method is used to return a mutated version of the list, so the original isn't gone.

So a side effect is manipulating the data?

No, manipulating data is fine, that is precisely what functions are for. The problem is when you make irreversible changes to the data, that's why we avoid mutable data, not using it.

Okay, what's an example.

Most modules and libraries are a combination of pure functions made to be predictable and reusable. Not all are like that though.

That's That

Hope you learned something.

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay