Compiler bug
Bjorn Gustavsson
bjorn@REDACTED
Fri Apr 12 14:10:52 CEST 2002
The example is legal Erlang code.
is_list/1 is a type check (from R8). "and", "or", and "not" are now allowed
(from R8).
There really is a bug in the compiler.
A bug fix will probably be included in the next OS release of R8B.
/Bjorn
Hakan Stenholm <etxhste@REDACTED> writes:
> >I found a compiler bug in R8B-0. Here is the simplest test case
> >I could come up with:
> >
> >-module(compiler_bug).
> >-export([test/1]).
> >
> >test(A) when not is_list(A) -> A.
>
> This shouldn't work:
> * you can't use user defined functions (like is_list/1) in a guard,
> only type checks:
> atom/1, constant/1 ,float/1, integer/1, list/1, number/1, pid/1,
> port/1, reference/1, tuple/1, binary/1, record/2
>
> comparision operartors:
> >,<,=<,>=,==,/=,=:=,=/=
>
> and some bifs (together with arithmeteric ops):
> element/2, float/1, hd/1, length/1, round/1, self/0, size/1,
> trunc/1, tl/1, abs/1, node/1, node/0, nodes/0
>
> * I'm not sure if "and", "or" and "not" can be used (, and ; can be used in a
> when statement to get "and" and "or" behaviour).
>
--
Björn Gustavsson Ericsson Utvecklings AB
bjorn@REDACTED ÄT2/UAB/F/P
BOX 1505
+46 8 727 56 87 125 25 Älvsjö
More information about the erlang-questions
mailing list