applyDiscount :: ResourceCount -> HarborDiscount -> (Int, ResourceCount)
applyDiscount playerRes harbor = go 0 playerRes
  where res = consumes harbor 
        go n remainingRes = if not $ sufficient remainingRes res
                               then (n, remainingRes) 
                               else go (n+1) (remainingRes <> mkNeg res)
applyDiscount :: ResourceCount -> HarborDiscount -> (Int, ResourceCount)
applyDiscount playerRes harbor = go 0 playerRes
  where res = consumes harbor 
        go n remainingRes = if not $ sufficient remainingRes res
                               then (n, remainingRes) 
                               else go (n+1) (remainingRes <> mkNeg res)
applyDiscount playerRes harbor = go 0 playerRes
  where res = consumes harbor 
        go n remainingRes = if not $ sufficient remainingRes res
                               then (n, remainingRes) 
                               else go (n+1) (remainingRes <> mkNeg res)