Nói rằng tôi có một chức năng (nó không có bất kỳ ứng dụng thực tế, chỉ cần quan tâm đến học tập, cách như vậy, lạ để viết nó, với monoids, functors applicative và combinators fixpoint)Debugging Sum vô hạn trong Haskell
f :: Num a => a -> Sum a
f = fix ((<>) <$> Sum <*>)
Nó gõ, nhưng tôi không thể chắc chắn nó làm những gì nó dự kiến sẽ làm trước khi tôi có thể kiểm tra nó.
Làm cách nào để thử nghiệm và/hoặc gỡ lỗi? Tôi có nghĩa là một cái gì đó giống như nhìn thấy kết quả sau nhiều lần lặp lại như nó có thể với take 10 [1..]
.
tôi biết một chút về cơ sở vật chất gỡ lỗi đơn giản của ghci
như :break
và :step
, nhưng nó bước vào tính không kết thúc vì vậy tôi không thể kiểm tra bất cứ điều gì (nó thậm chí còn có vấn đề để ^C
nó). Và tôi cũng không thể tìm cách sử dụng trace
từ mô-đun Debug
trong chức năng này.
Mọi con trỏ sẽ được đánh giá cao.
Vâng, bạn dễ dàng nhìn thấy những gì nó làm nếu bạn mở rộng nó để 'f = sửa chữa (\ g -> \ x -> Tổng x <> gx)' – phg