
I'm interested in why you think this (especially as this is what we do anyway :-)
A bunch of small reasons:
- how much time goes into explaining to new users of Prolog this particular feature of Prolog ? just too much to be worth its while
- lot's of existing code has the form:
loop(0) :- !. loop(N) :- M is N - 1, loop(M).
also in libraries. Try to explain to users that ?- loop(0). finishes (quickly) but that ?- loop(1-1). loops.
- try giving a type to predicates that use ISO arithmetic - you must cater for the arithmetic expressions; suddenly, lists that were supposed to have only numbers, are typed as list of arit_expression and this propagates in places you don't want
- I find it inconsistent that some builtins but not all, accept besides numbers also arithmetic expressions (similar for library predicates); why is ?- length([1,2,3],1+2). in SWI an error, but succeeds in Yap ? Why did ISO decide to flag ?- functor(foo(1),_,2-1). as an error ? How about ?- put(97+1). ? Not ISO I know, but Yap and SICStus (3.*) are fine with it, while SWI (5.6.39) says Type error.
- how much time goes into maintaining besides a compilation schema for arithmetic, also an interpreter ? just too much to be worthwhile
Unfortunately, it is still the same in 3.1 (unless you use 64-bit compilation).
But I would then just use larger numbers and have the same problems, right ?
Cheers
Bart Demoen