Hacker News new | ask | show | jobs
by favorited 898 days ago
When I choose a concrete slab foundation, their price estimate tool gives me a range of £NaN - £NaN. Representing currency as a floating-point value strikes again.
3 comments

There's a lesson here:

Lay your foundation with strong types.

What type are you supposed to use to represent total cost when spending infinite money for 0 days?
It seems the Romans took their concrete type secrets to the grave.
Modern concrete with superplasticizers is far superior to Roman concrete.

The greatest limiting factor is not the concrete itself, but rebar. It will eventually rust, causing the concrete to spall and crack. So in most cases it makes no sense to really optimize the concrete lifetime, because why bother?

If you're willing to build structures that rely only on compression and gravity, then we can totally do stuff that the Romans never dreamt of. Just look at any modern concrete gravity dam as an example.

You need refinement types. Psuedocode:

    timespandays : int, timespandays > 0
your program can then be proven by the compiler not to NaN.
In Javascript? probably a different type than if you took 0 days to spend infinite money.
Typical Javascript strikes again?
The area defaults to zero, and recalculates when you change any of the parameters, resulting in a divide by zero and NaN being displayed