content

What does "point-free" mean in Haskell?

In Haskell, there are two ways to write a function definition. Consider the following functions: 1

foo :: a -> b
bar :: b -> c
foobar :: a -> c

To define foobar, one can either do foobar a = bar (foo a) or foobar = bar . foo. The second definition is known as "point-free". This is despite the fact that the operator for combining functions together is literally a point. 1

Defining a function with the arguments, as in foobar a = bar (foo a), is known as extensional equality or point-wise equality. The values of the arguments are sometimes called points. 1

Defining the function without the arguments, as in foobar = bar . foo, is known as morphism equality. That is, the morphism foobar is the same as the composition of the functions foo and bar. Since no argument, or points, were referred to, this is known as point-free. 1

meta

tags: haskell, math

created:

commit: bab4c44e