Was ist ein guter Weg, um debug-haskell-code?
Habe ich die ghci-debugger würde aber wirklich lieber, wenn es war etwas mit einer integrierten text-editor, vereinfacht das setzen von breakpoints. Es sollte wohl nicht zu streng bewerten, dass alle sichtbaren Variablen, aber zumindest vereinfachen den Prozess der Suche auf den lokalen Zustand.
Vor kurzem fand ich die trace-Funktion, die hilfreich war, indem debug Ausdrucke von sonst schwer stellen.
- Wahrscheinlich haben Sie schon gelesen, aber nur zur Information: haskell.org/haskellwiki/Debugging
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein guter Weg, um debug-Haskell-code zu schreiben und zu testen algebraische Gesetze mithilfe von QuickCheck und SmallCheck. Es wurden mehrere Haskell Debugger, einschließlich Hut, Kapuze, und Freya, aber keiner von Ihnen wahrgenommen worden als genügend wertvoll zu sein, lohnt sich die Aufrechterhaltung für eine lange Zeit.
Wenn es Haskell, Sie haben, anders zu denken darüber, wie Sie Dinge tun. Die ICFP Papier auf die QuickCheck-Seite hat einige gute Beispiele, um Ihnen den Einstieg. Wenn Sie möchten, eine real-world-Beispiel
xmonad
ausgiebig ausgetestet mit QuickCheck.Ja, ein frontend für die GHCi-debugger wäre das eine gute Sache. Vielleicht bekommen wir etwas getan, in den nächsten Hackathon. Aber in der Zwischenzeit:
Alternativ Haskell eignet sich gut, um bottom-up-testen mit QuickCheck. I. e., testen Sie Ihre Komponenten einzeln, dann zusammen. Wenn Ihr code ist rein diese oft einfach Nur Funktioniert.
Als eine Randnotiz, bewusst sein, dass
Debug.trace
wird NICHT dein Freund sein beim Debuggen von Multithread-Programmen.Prüfung ist der Weg zu gehen auf lange Sicht.
Für meine eigenen Zwecke finde ich, dass es eine Kombination von Faktoren.
Wie schon in anderen Antworten, eine Menge Leute Liebe QuickCheck. Ich habe festgestellt, dass es schwierig zu definieren, sinnvolle QuickCheck test-Fällen für mindestens einige meinen code so allgemein zu machen, mehr Einsatz von standard-unit-tests. That being said, es gibt eine hervorragende Einführung in die Verwendung von QuickCheck in Kapitel 11 Real-World-Haskell.
Sollten Sie sich mit beiden QuickCheck und HUnit, möchten Sie vielleicht zu schauen in test-framework.