applyabstractionoperator-precedencelambda-calculus# lambda calculus precedence of application and abstraction

```
Application has higher precedence than abstraction.
```

In this sense, what is lambda calculus abstraction? I'm confused at what there is to have precedence over?

Solution

Lambda abstraction is `λx.M`

, for some variable `x`

and arbitrary term `M`

.

Application is `(MN)`

, for some arbitrary terms `M`

and `N`

.

Precedence is the question which of several operation is to be performed first if more than one reading is possible because the term is ambiguous due to omission of brackets. For example in arithmetic, multiplication by convention has precedence over addition, which means that `5+2×3`

is read as `5+(2×3)`

and not as `(5+2)×3`

. The multiplication operator is evaluated first and binds the terms closest to it, and addition comes secondary, embedding the multiplication term.

W.r.t. to lambda calculus, the convention that application has higher precedence than abstraction means that in case of doubt because brackets have been ommitted, you will first try to form an application and only afterwards perform abstraction, so application "binds" stronger, and an abstraction term will be formed later and subsume the application term.

E.g., `λx.M N`

could in principle be read as either `λx.(MN)`

or `(λx.M)M`

, but since application has precedence over abstraction, you first form the possible application `(MN)`

and then the abstraction `λx.(MN)`

. If it were the other way round, i.e. if abstraction had precedence over application, then you would first try to form an abstraction term `(λx.M)`

, then application with the term you already got `((λx.M)M)`

.

So by defining that application has precedence over abstraction, `λx.M N = λx.(MN)`

, and not `((λx.M)M)`

.

- Pandas: How to make apply on dataframe faster?
- When should I (not) want to use pandas apply() in my code?
- Apply function to each cell in DataFrame
- How to use pandas to find consecutive same data in time series
- Vectorized solution to find uninterrupted attendance streaks
- How to keep non-numeric columns when using apply() function on a data frame in R?
- Loop through a number of variables and insert each into a function R
- Quickly binning values within R
- Determine the length of string and extract the first 15 or 14 characters
- R: how to use apply in dataset
- Efficient way to assign a value to a dataframe row, based on comparing value in another column with thresholds?
- r iterating a function across two dataframes to compute spatial distances between lon/lat points
- Pandas: Aggregate and/or apply does not work with user defined function
- R function for matching rows in dataframe to pattern in another dataframe and adding grouping variable
- duplicate and cbind multiple columns of data frame several but different times
- Extracting specific group value from a data.table list and returning as a vector in R
- imported function from another file is slow
- Pandas - Parallelize the pinging of a list of websites
- How to access the function itself in apply-like functions
- Pandas - Lambda inside apply to return a row
- How can i use Tailwind directive @layer @apply, when i was in Tailwind CDN environment?
- how to assign an attribute to some variables using another data frame?
- how to do the cluster wise summary statistics dynamically
- Calculating row-wise student's t test between selected variables in a dataframe - R
- macro form of clojure.core apply function
- Is nested list not suitable for manipulating single element in vector?
- Why can't I std::apply for a member function
- Apply operation to multiple specified columns in data table
- Function applied to each element of a list and returns a list of list in R
- Using apply() family to repeate a plot() across columns