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