In Haskell, there is no sharp distinction between a variable and a
function: a function is just a variable (binder) with a function
type. This means that a top level function is just any top level
- binder with a function type.
+ binder with a function type. This also means that sometimes top level
+ function will be used when top level binder is really meant.
As an example, consider the following Haskell snippet: