The missing introduction to Lambda Calculus (for Mathematicians)
Perché?
- Alla base dei linguaggi funzionali
- Citato nel corso di Logica
- Turing completo
Tesi di Church
Le seguenti sono equivalenti
- Macchine di Turing
- Macchine a registri
- Funzioni di Kleene
- Lambda calcolo
Programmazione Funzionale
Primitive
\text{false} \\
\text{true}
Liste
[1, 2, 3, 4, 5]
Liste
[1, 2, 3] + [\text{``a"}, \text{``b"}, \text{``c"}] = [1, 2, 3, \text{``a"}, \text{``b"}, \text{``c"}]
Concatenaizone di Liste
\text{``gruppo''} = [\text{`g'}, \text{`r'}, \text{`u'}, \text{`p'}, \text{`p'}, \text{`o'}]
Testo come Liste
\begin{array}{ccccc}
f & : & X & \to & Y \\
&& x & \mapsto & 2x + g(x)
\end{array}
Funzioni
\begin{array}{ccc}
X & \to & Y \\
x & \mapsto & 2x + g(x)
\end{array}
Funzioni
x \mapsto 2x + g(x)
Funzioni
x \mapsto \text{``Espressione in $x$''}
Funzioni
\text{isEven} \coloneqq x \mapsto \text{``$x$ è congruo a $0$ mod $2$''}
Funzioni
\begin{aligned}
\text{isEven}(7) &= \text{false} \\
\text{isEven}(4) &= \text{true}
\end{aligned}
\text{map}(f, [1, 2, 3]) \coloneqq
[f(1), f(2), f(3)]
Operazioni su Liste
Map
\text{filter}(p, [e_1, \dots, e_n]) =
[e_i \mid \text{se $p(e_i) = \text{true}$} ]
Operazioni su Liste
Filter
\text{filter}(\text{isEven}, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) \\
= [0, 2, 4, 6, 8, 10]
Operazioni su Liste
Filter
Tipi
Map
Filter
\text{map} : (\text{A} \to \text{B}) \times \text{Liste($A$)} \to \text{Liste($B$)}
\text{filter} : (\text{A} \to \text{Bool}) \times \text{Liste($A$)} \to \text{Liste($A$)}
Lambda Calculus
By aziis98
Lambda Calculus
- 111