Question

What’s the difference between a function and a functor?

Answer
By Claudio Buttice | Last updated: February 10, 2020

In computer programming, a function is a series of instructions and computational steps provided to carry out a certain task.

These instruction constitute a unit which can be used in any part of the program where that task needs to be performed. (Read Straight From the Programming Experts: What Functional Programming Language is Best to Learn Now?)

The function will provide a result value that depends on its parameters and arguments, such as computing mathematical values to determine an output. The function can also include performing certain tasks depending on the result, such as modifying data inside a database or start other linked functions in a recursively manner.

In procedural programming (PP), functions, procedures or subroutines perform operations on the data. In this top-down approach, computers receive instructions in the form of functions to know what to do, step by step, to carry out any task.

Functors come into play in object-oriented programming (OOP) instead.

In OOP, data and functions (and, therefore, computer behaviors) are encapsulated into objects. Functions are not something on their own anymore, but they are always connected to objects in a modular fashion.

Each object "knows" how to perform its tasks and interact with the other objects that constitute the application itself.

Functors are objects that behave as functions. They are class objects which can overload the function operator() and act as function themselves. They can encapsulate their own function which is executed when needed.

Pointers to member functions or arbitrary classes can be built up so they are all called through the same interface regardless of their class.

For example: Let's suppose we got a truck driver (our object) and that we want them to reach a certain location. In PP you must hand them a book with instructions on how to drive (a function), while in OOP this "knowledge" is already part of the object itself.

So these instructions determine the speed that the truck must keep on certain roads, say 55 mph on city roads, 65 mph on motorways and 70mph on highways. Now let's imagine that one day we got a urgent delivery, and we we want him to increase his speed by 15 mph. In PP, we must write several different functions to modify each speed.

In OOP, instead, we only need a functor to increment them all by 15 mph since the object is a class that was created to overload the operator().

Share this Q&A

  • Facebook
  • LinkedIn
  • Twitter

Tags

Software Development Data Management Computer Science Programming Languages Object Oriented Programming (OOP) Data Science

Written by Claudio Buttice | Data Analyst, Contributor

Profile Picture of Claudio Buttice

Dr. Claudio Butticè, Pharm.D., is a former clinical and hospital pharmacist who worked for several public hospitals in Italy, as well as for the humanitarian NGO Emergency. He is now an accomplished book author who has written on topics such as medicine, technology, world poverty, human rights, and science for publishers such as SAGE Publishing, ABC-Clio, and Mission Bell Media. His latest book is "Universal Health Care" (Greenwood Publishing, 2019).

A data analyst and freelance journalist as well, many of his articles have been published in magazines such as Cracked, The Elephant, Digital Journal, The Ring of Fire, and Business Insider. Dr. Butticè also published pharmacology and psychology papers on several clinical journals, and works as a medical consultant and advisor for many companies across the globe.

More Q&As from our experts

Related Terms

Related Articles

Term of the Day

Encryption

Encryption is the process of using an algorithm to transform plain text into cypher text in order to ensure that sensitive...
Read Full Term

Tech moves fast! Stay ahead of the curve with Techopedia!

Join nearly 200,000 subscribers who receive actionable tech insights from Techopedia.

Resources
Go back to top