Ist es möglich, statische oder abhängige Typen zu verwenden, um zu beweisen, dass eine Funktion idempotent ist?
Ich habe Google und verschiedene Orte auf StackOverflow / StackExchange nach der Antwort durchsucht, ohne Erfolg. Am ehesten habe ich dieses Gespräch über Idris gefunden: https://groups.google.com/forum/#!topic/idris-lang/yp7vrspChRg
Leider geht mir diese Diskussion etwas über den Kopf.
Antworten:
Für bestimmte Funktionen ist es. Besonders wenn man die Funktion kennt ;-)
Wenn Sie mit Ihrer Frage "Gibt es einen Algorithmus, der automatisch entscheidet, ob eine beliebige Funktion idempotent ist oder nicht" meinen, lautet die Antwort aufgrund der bereits in den Kommentaren erwähnten Theoreme "Nein". Für bestimmte Funktionsklassen kann man jedoch theoretisch sehr leicht entscheiden, ob die Funktion idempotent ist oder nicht. Wenn die Funktion beispielsweise rein ist (dh ohne Nebenwirkungen) und man weiß, dass sie für eine bestimmte Eingabe immer einen endlichen Wert zurückgibt, kann die Idempotenz einfach durch Ausprobieren
f(f(x))=f(x)
einer möglichen Eingabe bestimmt werdenx
zur Funktion. Nicht, dass dies sehr effizient wäre, es könnte bis zum Ende des Universums laufen.Wenn das also nicht die Antwort ist, nach der Sie gesucht haben, schreiben Sie eine bessere Frage. Derzeit ist ziemlich unklar, wonach genau Sie suchen.
quelle