Sometimes the simplest problems are harder than they first seem. A client once specified a requirement to me: we'll give you the VAT-inclusive (20%) price; you need to generate invoices showing the net and VAT amounts. Sounds easy, right? net = round(tot*5/6) vat = round(tot/6)
-
Show this thread
-
Some time passed. The client came back to me: "You've been calculating the invoices wrong! Our accountant has had to work an extra few days because about one in five of your invoices has an error of £0.01, and our accounts don't balance!"
1 reply 0 retweets 3 likesShow this thread -
Did you spot my error? So, what's the moral of this story? I'm not sure, because it's quite subtle, but I could claim that it's a case of "make impossible states unrepresentable". The challenge was in recognising that we were representing impossible states. Suggestions welcome.
10 replies 0 retweets 3 likesShow this thread -
Replying to @propensive
Need to use subtraction for one of the values based on the other. You could catch this with a law that adds them back up and ensures totals match.
1 reply 0 retweets 2 likes
Yeah, it's difficult to encode in a type, so property testing is your next best friend.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.