Create a Brobdingnagian monstrosity of 1.2m lines of Haskell. That way, the tooling you create to make working on it tolerable will be practically instant on codebases that don’t need 18 lanes for a 3 point turn.
(With love and appreciation, @mercury)
@kerckhove_ts This does have the flavour of “an ethical engineer would never write a procedure ‘destroyBaghdad’ - it should take a city as a parameter”
Tired of probabilistic correctness guarantees?
instance Arbitrary UUID where
…
shrink uuid = case UUID.toWords uuid of
(a,b,c,d) -> [UUID.fromWords a' b' c' d' | a' <- sw a, b' <- sw b, c' <- sw c, d' <- sw d]
where sw w = take 10 $ iterate (`div` 2) w
@DRMacIver has pointed out that Hypothesis will report all the assertions that fail rather than just the first. A decadent affordance to be avoided by the faithful.
Yes, it will be extremely difficult to follow what's going on as the counterexample-finding algorithm dances between the different assertions. This is by design, and will help you back into the divine light of Writing Correct Code The First Time.