Ich definierte eine NumericPreludeRing
Instanz für meinen eigenen Datentyp, konnte aber one
oder fromInteger
nicht definieren. Als ich das Programm kompilierte, bekam ich keine Warnungen, weil die Klasse Ring
standardmäßig wechselseitig rekursive Implementierungen für one
und fromInteger
hat. Das Ergebnis: ein Stapelüberlauf, der sehr schwer zu finden war. (In der Tat, wenn -XRebindableSyntax verwenden, die fromInteger
auf numerische Konstanten müssen nicht explizit sein, so dass es ziemlich schwierig war, um herauszufinden, fromInteger
der Täter des Stapelüberlauf war.)Minimale vollständige Definition Anmerkungen für Haskell
Gibt es eine Möglichkeit für Entwickler Klassen mit Anmerkungen versehen zu eine minimale vollständige Definition angeben? Es wäre sehr hilfreich, wenn GHC eine Warnung für Instanzen ausgeben könnte, die diese Definition nicht erfüllen und gleichzeitig eine vollständige Reihe von Standardimplementierungen zulassen. Wenn nicht, was ist die akzeptierte Praxis hier? Sollten Entwickler die (a?) Minimale Menge von Methoden ohne Standardwerte belassen, damit die entsprechenden Warnungen ausgegeben werden, oder sind wir auf RTFM angewiesen?