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$)}
Made with Slides.com