Qual è lo scopo del calcolo del combinatore SKI (o anche del calcolo lambda)? Quali sono alcuni esempi di vita reale del suo utilizzo?


8

Capisco di cosa si tratta, ma non vedo come sia utile per algoritmi o altro. Forse mi manca qualcosa. Ho bisogno di qualcuno che mi dia un esempio di come può essere utilizzato in modo da poterlo capire meglio.


2
Esistono diversi linguaggi di programmazione esoterici basati sulla logica combinatoria, ad esempio Unlambda . Vedi anche qui . Puoi trovare ulteriori informazioni esplorando i collegamenti negli articoli.
Anton Trunov,

Risposte:


11

L'applicazione ovvia del calcolo lambda è qualsiasi linguaggio di programmazione funzionale (ad es. Lisp, ML, Haskell) e qualsiasi linguaggio che supporti funzioni anonime.

Per quanto riguarda il calcolo combinatore, ci deve essere una "applicazione nel mondo reale"? Le macchine di Turing, per esempio, non vengono quasi mai usate "nel mondo reale" ma formano la base della teoria del calcolo. Una caratteristica utile dei calcoli combinatori è che sono sistemi più semplici rispetto, ad esempio, alle macchine di Turing. Se vuoi dimostrare che un altro sistema è completo di Turing, potrebbe essere più semplice mostrare come può simulare i combinatori piuttosto che mostrarlo può simulare una macchina di Turing.


1
Naturalmente, i combinatori sono stati usati nella compilazione di linguaggi funzionali (sebbene non nel calcolo SKI stesso).
cody

1
@cody Invia una risposta a riguardo! Non è qualcosa che conosco, quindi preferirei non modificare la mia risposta.
David Richerby,

3
Ad esempio, il sistema di tipi di Scala ha dimostrato di essere Turing completo incorporando il calcolo SK in esso. Non riesco nemmeno a immaginare l'assurda complessità dell'incorporazione di una (Universal) Turing Machine. Ironia della sorte (dato il nome) la completezza di Turinf è raramente mostrata con le Macchine di Turing. SQL ha dimostrato di essere TC implementando un sistema di tag ciclico, HTML + CSS con regola 101, la MMU Intel codificando un'istruzione "Sposta, diramazione se zero, decremento".
Jörg W Mittag,

@ JörgWMittag re: " HTML + CSS con la regola 101 " intendevi " Regola 110 "?
RBarryYoung,

@RBarryYoung: Certo, stupido errore di battitura. Il codice è qui: github.com/elitheeli/stupid-machines
Jörg W Mittag

5

Ho trovato SKI utile per comprendere alcuni assiomi logici.

Ad esempio, un'assiomatizzazione in stile Hilbert dell'implicazione (intuizionistica) è

(un'Bc)(un'B)un'cun'(Bun')

La prima volta che ho visto questi assiomi, mi chiedevo perché mai avrebbero dovuto funzionare. Certo, è facile verificare che siano in possesso. Ma perché dovrebbero bastare, cioè perché usare questi due postulati da soli è sufficiente per provare (attraverso il modus ponens) tutte le altre tautologie implicazionali? Mistero ... o è?

Bene, si scopre che ogni tautologia deve corrispondere al tipo di qualche termine lambda, grazie all'isomorfismo di Curry-Howard. Ma detto termine lambda può essere equamente riscritto in termini di combinatoriS,Ksolo. Quindi, i tipi diS e Kdeve generare, attraverso l'applicazione, i tipi di qualsiasi tautologia. E in effetti, i due assiomi sopra sono i tipi più generali perS e K.


2

Dai un'occhiata a LINQ (Language INtegrated Query) di Microsoft. Fa ampio e abbastanza diretto uso del calcolo lambda per manipolare e trasformare gli alberi delle espressioni. Probabilmente l'esempio più completo e sofisticato sarebbe Linq2SQL (l'implementazione di SQL Server) che esegue in modo efficiente trasformazioni complesse che separano le parti dell'albero delle espressioni che possono essere delegate al server di database.

Questa è a malapena la prima tecnologia che consente query che combinano dati provenienti da più fonti, ma potrebbe anche essere la prima che automatizza il districare le dipendenze per sfruttare le capacità di manipolazione in blocco dei server di database. Non è perfetto (a volte devi dare una mano) ma fa il lavoro grugnito molto bene e con un'attenzione ai dettagli che non otterrai dagli umani.

Quando non bisogna aiutare fuori, la comprensione del calcolo vi porterà un lungo cammino verso capire cosa c'è che non va - così, oltre a cosa serve? c'è la tua risposta a Perché devo imparare questo quando le macchine lo faranno per me?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.