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.
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.
Risposte:
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.
Ho trovato SKI utile per comprendere alcuni assiomi logici.
Ad esempio, un'assiomatizzazione in stile Hilbert dell'implicazione (intuizionistica) è
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 combinatorisolo. Quindi, i tipi di e deve generare, attraverso l'applicazione, i tipi di qualsiasi tautologia. E in effetti, i due assiomi sopra sono i tipi più generali per e .
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?