Small poll
Luke Gorrie
luke@REDACTED
Fri Dec 12 00:00:07 CET 2003
Kostis Sagonas <kostis@REDACTED> writes:
> Now let me tell you why I am interested in 3:
>
> In the context of generating native code, it is really a nuisance
> to have to handle all sorts of illegal combinations of arguments
> to "basic" primitives like "+". Moreover, in the case of HiPE,
> because the compiler is (much) more sophisticated than the BEAM
> one, it actually discovers quite a lot more cases of such errors.
> Currently, we try our best to "immitate" the behaviour of the BEAM
> compiler, but in sleepless nights like this one, I keep wondering
> whether there should really be a limit to the level of naivety
> one pretends to show, or shouldn't there be?
Another option would be "2.5". Suppose the function is:
foo(A) ->
X = a+42,
bar(X).
having detected the problem you could compile it as essentially:
foo(A) ->
throw({badarith, a, 42}).
Would that ease the compiler work any?
Some other compilers do exactly this. I know because once, due to a
type-inferencer bug, I got a message like:
Error: 42 is not an integer.
because the compiler had wrongly convinced itself that a variable
could never be bound to an integer, but at runtime when the error was
generated it actually was :-)
More information about the erlang-questions
mailing list