Die nützlichste und lehrreichste funktional-logische Sprache zu lernen

9

Ich war ziemlich beeindruckt von der 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.

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 hat 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 bis jetzt gefunden habe:

  1. Merkur : behauptet, schnell zu sein, stark typisierte Prolog. Rein deklarativ, aber keine logischen Variablen! Keine Einschränkung Programmierung? Scheint der am weitesten verbreitete FLP zu sein. Interop ??

  2. Curry : scheint vielversprechend und am weitesten fortgeschritten, aber im Moment ein bisschen zu niedrig Dokumentation. Ist "experimentell" unreif / nicht bereit zu tauchen? nur basierend auf Haskell oder eigentlich gute Interop mit Haskell?

  3. Ciao : scheint viele Features zu bieten, die ich möchte, aber Stack Overflow nicht scheint es überhaupt zu wissen, obwohl es seit 1984 existiert? Was stimmt damit nicht? Interop?

  4. drools (Java-Bibliothek / DSL): behauptet, dass es eine hybride Vorwärts- und Rückwärtsverkettung erlaubt. Reifen. Direktes Interop mit Java / Scala, aber auf veränderbare Daten / Imperativ-Konstrukte angewiesen? Wie gut integriert es sich in funktionale JVM-Sprachen?

  5. miniKanren: Implementierungen existieren auf verschiedenen Plattformen. Wie ist Interop? Effizient?

  6. Lambda Prolog Implementierungen wie:

    1. Caledon : Könnte nett sein, aber schwere Theorie. Nützlichkeit? Effektive Interop mit Haskell? Dokumentation?

    2. Tejus . ähnlich wie Caledon.

Gut, aber theoretisch liest und voreingenommen auf Curry und nicht auf praktische Bedenken:

ib84 16.07.2013, 11:18
quelle

2 Antworten

4

Ich kann Ihnen eine (leicht) voreingenommene Empfehlung für Curry geben.

Wie Sie bereits erwähnt haben, ist Curry ziemlich fortgeschritten und, obwohl noch experimentell, definitiv bereit, verwendet zu werden. Es gibt bereits Anwendungen im produktiven Einsatz. Sie werden nicht viele Lesungen zu praktischen Aspekten finden, da Curry hauptsächlich eine Forschungssprache ist. Es gibt jedoch eine kleine, aber hilfreiche Community, die die Curry-Mailing-Liste liest und beantwortet:

Ссылка

Hinsichtlich der Interoperabilität scheint es zwei Möglichkeiten zu geben: Der Münster Curry Compiler (MCC) unterstützt eine Teilmenge der Haskell-Fremdfunktionsschnittstelle, um C-Code aufzurufen.

Die neueste Curry-Implementierung, das Kiel Curry System 2 (KiCS2), kompiliert Curry nach Haskell. Es gibt eine schematische Möglichkeit, den Haskell-Code von Curry aus aufzurufen, wenn Sie ihn verwenden KiCS2 (siehe KiCS2-Handbuch , Anhang D). Leider bin ich mir einer a nicht bewusst Möglichkeit, Curry-Code aus einer anderen Sprache aufzurufen.

    
Fabian 16.07.2013, 13:19
quelle
0

Der am meisten nützliche Nexus von FP und LP war, soweit ich gefunden habe, Mercury + Erlang. Beide sind übrigens aus akademischer Sicht interessant (Sie müssen wirklich Ihre Grundlagen haben, wenn Sie gute Dinge mit beiden oder beides tun wollen), aber beide legen auch einen großen Wert darauf, Produkte auf den Markt zu bringen und sie im Gegensatz zu erhalten zu Kuriositäten zu sein.

Ich bin nicht wirklich sicher, ob das OP "nützlicher" als "lehrreich" gewichtet hat, und ich weiß auch nicht, ob "nützlich" "Code bedeutet, der nützlich Probleme in der realen Welt löst". Unter der Annahme, dass dies hier zu den Kriterien gehört, ist Merkur + Erlang bei weitem die interessanteste Kombination aus LP und FP, die es derzeit zu geben gilt.

    
zxq9 17.09.2017 13:51
quelle