Sono rimasto molto sorpreso dalla potenza di Prolog. Ci è voluto un po 'di tempo per girare la testa, ma per me sembrava essere la lingua dichiarativa più bella là fuori. Ecco perché recentemente, dopo due anni di programmazione funzionale con Scala, ho deciso di dare di nuovo un'occhiata alla programmazione logica, per "allenare il mio cervello" o meglio per l'uso effettivo.La maggior parte del linguaggio logico-funzionale più utile e istruttivo da apprendere
La combinazione di programmazione logica e funzionale mi sembra interessante per apprendere/consolidare i concetti di entrambi i paradigmi dichiarativi. Trovo anche che i sistemi di tipo forte siano molto utili e affascinanti.
Scala davvero splenduto con interop. Non reinventiamo le ruote. Dovrebbe essere in grado di chiamare il codice in un'altra lingua principale, e preferibile anche essere chiamabile. Ma non deve essere Java. C o Haskell andrebbero bene anche loro.
Quindi, quali sono oggi i linguaggi FLP più utili e illuminanti e quali sono le vostre opinioni e raccomandazioni su di essi?
Ecco quello che ho trovato finora:
Mercury: sostiene di essere veloce, fortemente tipizzato Prolog. Puro dichiarativo, ma nessuna variabile logica! Nessuna programmazione di vincoli? Sembra essere il FLP più utilizzato. Interop ??
Curry: sembra promettente e il più avanzato, ma in questo momento un po 'basso sulla documentazione. "Sperimentale" significa immaturo/non pronto a tuffarsi? basato semplicemente su Haskell o in realtà una buona interazione con Haskell?
Ciao: sembra fornire molte funzionalità che desidero, ma Stack Overflow non sembra nemmeno saperlo affatto, anche se esiste dal 1984? Che cosa c'è che non va? Interop?
drools (libreria java/DSL): afferma che consente il concatenamento ibrido avanti e indietro. Maturo. Interop diretto con Java/Scala, ma basandosi su dati mutabili/costrutti imperativi? Quanto bene si integra con le lingue JVM funzionali?
miniKanren: esistono implementazioni su diverse piattaforme. Come va l'interoperabilità? Efficiente?
Lambda Prolog implementazioni quali:
buone ma teoriche legge e sbilanciata verso curry e non affrontare problemi pratici:
Non sono esperto ma Curry sembra essere il più promettente: assomiglia ad Haskell quindi è più bello di Prolog & Mercury (ma YMMV); puoi scrivere funzioni pure "regolari" come in Haskell; e puoi chiamare Haskell da esso. - Tutto sommato, sembra semplicemente un Haskell con potenti funzioni di programmazione di vincoli e logica (come i modelli funzionali) aggiunto, al contrario di un paradigma completamente separato per adattarsi. –