> I don't even know what "based on mathematics" means.
Sure - it's too broad to be a useful definition. Perhaps it would be better to say "based on mathematical functions". Function outputs depend only on their inputs. So you can take f(x) == f(x) as true.
> Nothing that's nondeterministic can be expressed
Sweet! This way my production code can do the same thing as my test code. My job is to know what my code will do. I'll take all the determinism I can get.
> Perhaps it would be better to say "based on mathematical functions"
OK, and imperative code is "based on mathematical predicate transformers." My point is that some FP advocates use the "based on mathematics" as some marketing tagline that mostly shows they understand neither mathematics nor FP.
> Sweet! This way my production code can do the same thing as my test code. My job is to know what my code will do. I'll take all the determinism I can get.
That wasn't my point. The expression x ∈ ℕ ∧ x > 10 ∧ x < 12 is perfectly deterministic, but because its components are nondeterministic it cannot be expressed in FP, even though it is very convenient to do so (and commonly done in mathematics).
> I don't even know what "based on mathematics" means.
Sure - it's too broad to be a useful definition. Perhaps it would be better to say "based on mathematical functions". Function outputs depend only on their inputs. So you can take f(x) == f(x) as true.
> Nothing that's nondeterministic can be expressed
Sweet! This way my production code can do the same thing as my test code. My job is to know what my code will do. I'll take all the determinism I can get.