Say Mam funkcji (nie ma żadnego praktycznego zastosowania, tylko zainteresowanie akademickiej, stąd dziwny sposób, żeby to napisać, ze monoids, aplikacyjnych funktorów i kombinatorów fixpoint)debugowanie nieskończony Sum w Haskell
f :: Num a => a -> Sum a
f = fix ((<>) <$> Sum <*>)
To typechecks, ale nie mogę być pewien, że robi to, co oczekuje się zrobić, zanim mogę go przetestować.
Jak można testować i/lub debugować? Mam na myśli coś takiego, jak zobaczenie wyniku po kilku iteracjach, jak to jest możliwe z take 10 [1..]
.
wiem trochę o prostych obiektów debugowanie ghci
jak :break
i :step
, ale kroki do obliczenia nie kończącej więc nie mogę niczego sprawdzać (to nawet problematyczne ^C
it). I nie wiem, jak korzystać z trace
z Debug
moduł w tej funkcji albo.
Wszelkie wskazówki byłyby mile widziane.
Cóż, łatwo widzisz, co robi, jeśli rozszerzysz go do 'f = fix (\ g -> \ x -> Suma x <> gx)' – phg