Ich war ziemlich erstaunt über die Kraft von Prolog. Es hat einige Zeit gedauert, um den Kopf herumzukriegen, aber für mich schien es die coolste deklarative Sprache da draußen zu sein. Deshalb habe ich mich vor kurzem, nach zwei Jahren funktionaler Programmierung mit Scala, erneut mit der logischen Programmierung beschäftigt, um "mein Gehirn zu trainieren" oder besser für den tatsächlichen Gebrauch.Am nützlichsten und lehrreichsten funktional-Logik Sprache zu lernen
Die Kombination von funktionaler und logischer Programmierung scheint für mich attraktiv zu sein, Konzepte beider deklarativer Paradigmen zu lernen/zu festigen. Ich finde auch starke Typsysteme sehr nützlich und faszinierend.
Scala wirklich mit Interop geglänzt. Lasst uns die Räder nicht neu erfinden. Es sollte in der Lage sein, Code in einer anderen Hauptsprache aufzurufen und vorzugsweise auch aufrufbar zu sein. Aber es muss nicht Java sein. C oder Haskell wäre auch in Ordnung.
Also, welche sind die nützlichsten und aufschlussreichsten FLP-Sprachen heute, und was sind Ihre Meinungen und Empfehlungen zu ihnen?
Hier ist, was ich bisher gefunden:
Mercury: behauptet, schnell zu sein, getippt stark Prolog. Rein deklarativ, aber keine logischen Variablen! Keine Einschränkung Programmierung? Scheint der am weitesten verbreitete FLP zu sein. Interop ??
Curry: scheint vielversprechend und am weitesten fortgeschritten, aber im Moment ein wenig niedrig in der Dokumentation. Ist "experimentell" unreif/nicht bereit zu tauchen? nur basierend auf Haskell oder eigentlich gute Interop mit Haskell?
Ciao: scheint viele Features zu bieten, die ich will, aber Stack Overflow scheint es überhaupt nicht zu wissen, obwohl es seit 1984 existiert? Was stimmt damit nicht? Interop?
Drools (Java-Bibliothek/DSL): behauptet, es ermöglicht hybride Vorwärts- und Rückwärtsverkettung. Reifen. Direktes Interop mit Java/Scala, aber auf veränderbare Daten/Imperativ-Konstrukte angewiesen? Wie gut integriert es sich in funktionale JVM-Sprachen?
miniKanren: Implementierungen existieren auf verschiedenen Plattformen. Wie ist Interop? Effizient?
Lambda Prolog-Implementierungen wie zum Beispiel:
Gut, aber theoretisch liest und voreingenommen gegenüber Curry und befasst sich nicht mit praktischen Anliegen:
Ich bin kein Experte, aber Curry scheint der vielversprechendste zu sein: es sieht aus wie Haskell, also liest es sich schöner als Prolog & Mercury (aber YMMV); Sie können "normale" reine Funktionen darin schreiben wie in Haskell; und Sie können Haskell davon anrufen. Alles in allem fühlt es sich einfach wie eine Haskell an, mit leistungsfähigen Logik- und Constraint-Programmierfunktionen (wie funktionalen Mustern), im Gegensatz zu einem völlig separaten Paradigma, an das man sich anpassen kann. –