Bugzilla – Bug 251
Haskell-Blueprint: Termination
Last modified: 2011-04-13 16:52:44 CEST
Bei diesen Aufgaben will man eigentlich nur Lösungen akzeptieren, die total terminieren - und eigentlich sollte der Student den Terminationsbeweis mitliefern oder doch wenigstens klarmachen, daß er ihn sich überlegt hat. * hart: nur nicht-rekursive Definitionen akzeptieren (vorgegebene folds dürfen benutzt werden, sonst nichts - d. h. man muß das "let" aus Haskell, das ja ein "letrec" ist, zu einem echten "let" machen - das kann nicht so schwer sein, einfache Analyse des Syntaxbaumes sollte reichen) * semi-hart: rekursive Definitionen nur akzeptieren, wenn das Induktionsargument klar ist (oder markiert ist mit Annotation, wie in Coq) d. h. bei jedem Aufruf muß das abnehmen (echter Teilterm) und die evtl. anderen Argumente dürfen nicht zunehmen (d. h. Teilterm) Das könnte man ausbauen, bis hin zu http://www.termination-portal.org/wiki/Functional_Programming aber die ganz beliebige Rekursion (mit ganz beliebig schweren Terminationsbeweisen) soll ja gar nicht gelehrt werden, sondern disziplinierte Programmierung.