newtype над Int и collect, но может есть стандартный способ?
+++ OK, passed 100 tests:
56% 0 .. 10
24% 10 .. 20
13% 20 .. 30
4% 30 .. 40
1% 40 .. 50
1% 50 .. 60
1% 60 .. 70
collect ровно это и делает, как я понимаю. а зачем newtype?
Чтобы диапазоны по 10, а не конкретные значения. А то у меня получается: 31 - 1%, 32 - 1% — не очень информативно
> quickCheck \x y -> collect (let x' = (x `div` 10) * 10 in show x' <> " .. " <> show (x' + 10)) $ x + y == y + x +++ OK, passed 100 tests: 16% "0 .. 10" 15% "-10 .. 0" 11% "10 .. 20"
ok, да. У меня что-то похожее и получилось: newtype Approx = Approx Int instance Show Approx where show (Approx n) = unwords [show $ n10 * 10, "..", show $ (n10 + 1) * 10 ] where n10 = n `div` 10 collect (Approx ...)
Обсуждают сегодня