Weiter zu den Ideen in: Gibt es nachweisbare reale Sprachen?
Ich weiß nichts über dich, aber ich habe es satt, Code zu schreiben, den ich nicht garantieren kann.
Nachdem ich die obige Frage gestellt und eine phänomenale Antwort erhalten habe (Danke an alle!), Habe ich beschlossen, meine Suche nach einer nachweisbaren, pragmatischen Herangehensweise an Haskell einzugrenzen . Ich habe mich für Haskell entschieden, weil es tatsächlich nützlich ist (es sind viele Web- Frameworks dafür geschrieben, dies scheint ein guter Maßstab zu sein) UND ich denke, es ist streng genug, funktional , dass es nachweisbar sein oder zumindest das Testen von Invarianten ermöglichen könnte.
Folgendes möchte ich (und konnte es nicht finden)
Ich möchte ein Framework, das eine Haskell-Funktion betrachten kann, hinzufügen, geschrieben in psudocode:
add(a, b):
return a + b
- und prüfen Sie, ob bestimmte Invarienten über jeden Ausführungsstatus verfügen. Ich würde es vorziehen, einen formellen Beweis zu erbringen, aber ich würde mich mit so etwas wie einem Modellprüfer zufrieden geben.
In diesem Beispiel wäre der Invarient, dass bei gegebenen Werten a und b der Rückgabewert immer die Summe a + b ist .
Dies ist ein einfaches Beispiel, aber ich denke nicht, dass es unmöglich ist, dass ein solches Framework existiert. Es würde sicherlich eine Obergrenze für die Komplexität einer Funktion geben, die getestet werden könnte (10 Zeichenfolgeneingaben für eine Funktion würden sicherlich lange dauern!), Aber dies würde eine sorgfältigere Gestaltung von Funktionen fördern und unterscheidet sich nicht von der Verwendung anderer formaler Funktionen Methoden. Stellen Sie sich vor, Sie verwenden Z oder B, wenn Sie Variablen / Mengen definieren, stellen Sie verdammt sicher, dass Sie den Variablen die kleinstmöglichen Bereiche geben. Wenn Ihr INT niemals über 100 liegen wird, stellen Sie sicher, dass Sie es als solches initialisieren! Techniken wie diese und eine ordnungsgemäße Problemzerlegung sollten - glaube ich - eine zufriedenstellende Überprüfung einer rein funktionalen Sprache wie Haskell ermöglichen.
Ich bin noch nicht sehr erfahren mit formalen Methoden oder Haskell. Lassen Sie mich wissen, ob meine Idee richtig ist, oder denken Sie vielleicht, dass Haskell nicht geeignet ist? Wenn Sie eine andere Sprache vorschlagen, stellen Sie bitte sicher, dass diese den "has-a-web-framework" -Test besteht, und lesen Sie die ursprüngliche Frage :-)