some questions (was Re: illegal guard)

Bob Smart <>
Thu Feb 17 01:12:22 CET 2000


1.
 > One of the reasons for this is that guards
 > should be easy to implement and very fast to check

I can understand this in receive, but do all guards have to be so restricted?
For example it makes "if" prety useless. Mind you I worked out that you
should use "case <boolean-expression> of ..." instead of "if". However
that brings up another problem:

Why do some things, like atom(X), only work inside guards and don't
give boolean results elsewhere. This is a minor irritation when writing
filter functions.

2. Erlang 5?

I saw a reference to Erlang 5 (in the mercury users mailing list).
Where is this being discussed? I have a few suggestions: not just on
booleans and guards.

3. JVM?

I saw a claim that the JVM doesn't handle tail recursion well so
would be problematic for functional languages. Not sure where I saw 
this but on reflection I don't understand it. All you have to do
(in Java rather than JVM terminology) is wrap the function body in
"while(true) { ... }". When you want to do a tail recursion you just
do (as you would at machine level): change the parameter and "continue".
Obviously you have to exit such a routine with an explict "return val".
Am I missing something?

Bob






More information about the erlang-questions mailing list