minor fixes to Stlc

This commit is contained in:
Philip Wadler 2017-07-17 16:06:36 +01:00
parent 0432804150
commit 3b62e81c06
2 changed files with 2426 additions and 2432 deletions

File diff suppressed because it is too large Load diff

View file

@ -237,18 +237,15 @@ currying. This is made more convenient by declaring `_⇒_` to
associate to the right and `_·_` to associate to the left. associate to the right and `_·_` to associate to the left.
Thus, Thus,
> `(𝔹𝔹) ⇒ 𝔹𝔹` abbreviates `(𝔹𝔹) ⇒ (𝔹𝔹)`, * `(𝔹𝔹) ⇒ 𝔹𝔹` abbreviates `(𝔹𝔹) ⇒ (𝔹𝔹)`
* `two · not · true` abbreviates `(two · not) · true`.
and similarly,
> `two · not · true` abbreviates `(two · not) · true`.
We choose the binding strength for abstractions and conditionals We choose the binding strength for abstractions and conditionals
to be weaker than application. For instance, to be weaker than application. For instance,
> `` λ[ f 𝔹𝔹 ] λ[ x 𝔹 ] ` f · (` f · ` x) `` abbreviates * `` λ[ f 𝔹𝔹 ] λ[ x 𝔹 ] ` f · (` f · ` x) `` abbreviates
> `` (λ[ f 𝔹𝔹 ] (λ[ x 𝔹 ] (` f · (` f · ` x)))) `` and not `` (λ[ f 𝔹𝔹 ] (λ[ x 𝔹 ] (` f · (` f · ` x)))) `` and not
> `` (λ[ f 𝔹𝔹 ] (λ[ x 𝔹 ] ` f)) · (` f · ` x) ``. `` (λ[ f 𝔹𝔹 ] (λ[ x 𝔹 ] ` f)) · (` f · ` x) ``.
\begin{code} \begin{code}
ex₁ : (𝔹𝔹) ⇒ 𝔹𝔹 ≡ (𝔹𝔹) ⇒ (𝔹𝔹) ex₁ : (𝔹𝔹) ⇒ 𝔹𝔹 ≡ (𝔹𝔹) ⇒ (𝔹𝔹)