Writing the tutorial I have noted you can do this:

        var a = (b + c as var d) + 1;

and also this:

        var a = (var b + c) + 1;

The "expr as var x" syntax is an extension of

        expr as x

which creates a val in an executable expression (rather than a var).
This is basically a side effect of the syntax for type expressions:

        typedef list = 1 + int * x as x;

which defines a recursion with a temporary variable, however in the executable
expression case the variable isn't temporary. The type expression syntax is
from Ocaml.

I find this a bit weird, this would seem to make more sense:

        var a = (var d = b + c) + 1;

Not however you cannot do this:

var x = (a = 3) + 1;

because that actually creates a record with field a set to 3 
and then fails because you cannot add 1 to it :)

However we could support the general assignment operator "def":

        var x = (def a, var b, val c = 1,2,3);

At present, Felix doesn't allow things like:

        var x = i++;

because i++ is regarded  as a statement. It's a bit weird to ban that,
but allow a variable assignment, even weirder to allow a binding
inside an expression!

We have a minor mess here. Originally Felix was specifically design
to *prevent* any kind of side effects in expressions. We wanted transparency.
But generators break this, and now we have variable initialisations,
but not assignments or other things. Note that a variable binding isn't
a mutator in the sense that it isn't modifying a variable, it's initialising it.

 

--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122412
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to