I am about to commit two interesting changed to the syntax.
In expressions "endif" and "endmatch" are now optional.

So you can write:

println (if 1 > 2 then 0 else if 1 > 1 then 2 else 1);

No need for endif. It is still useful:

println (if 1 > 2 then 0 else 1 endif + 42);

which is equivalent to

println ((if 1 > 2 then 0 else 1) + 42);

For matches, the branches are right associative:

println (match 3 with | 1 => 1 | 2 => match 42 with | 42 => 42 | 3 => 3);

so the 3 case is part of the inner (second) match. And here the first match:

println (match 3 with | 1 => 1 | 2 => match 42 with | 42 => 42 endmatch | 3 => 
3 );

Statement still matches require "endmatch".

Be warned, to implement the match thing I have changed the merge rule to keep
all possible interpretations of expressions. If you do something ambiguous it
may propagate into statements. These don't allow ambiguity.

--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to