[E-Lang] ERTP-aware MintMaker
Mark S. Miller
Wed, 14 Feb 2001 18:12:32 -0800
At 10:54 PM Tuesday 2/13/01, email@example.com wrote:
>At first I thought maybe the MintMaker was supposed to allow floating
>point amounts, and that was why all those "any"s are used instead of
>"int"s for the amounts. E aborts though on the compare ":(any >= 0)"
>with a floating point value. It calls the Java BigInteger compareTo
>function and that doesn't do any int-float promotion as some languages do.
>(Actually I am testing with the "(_ >= 0)" syntax used in 0.8.9.)
>Likewise I think the ":(0..quantity)" guard would fail as well on Decr.
>As long as the purse only allows ints then this attack won't work.
The intent is indeed to only allow integers. Your issue above is yet
another good reason for us to switch to Tyler's proposed ":(integer >= 0)".
Only with the latter syntax would it be clear to someone reading the code
that what's meant is "any *integer* greater than or equal to zero".
Terminology point: In E, we say "integer". "int" has a C-history of being
precision limited, and "Integer" has a similar Java history. I will not
call it "BigInteger" because they're simply integers. Those things that C
and Java folks call integers aren't.