You can now do this:

fun add : int -> int -> int = "$1+$2";
println$ add 1 2;
fun add3 : int -> int -> int -> int = "$1+$2+$3";
println$ add3 1 2 3;

i.e. you can make a primitive accept a sequence of arguments
instead of a tuple. There are many caveats:

It only work for 2 or 3 arguments.
It does not work for procedures.
You can NOT form a closure. for example 

        var g = add;
        var f = add 1;

will BOTH fail. Felix doesn't generate closures for C bindings except
for the whole function. If you want a closure you have to use
manual eta-expansion:

        fun eta (x:int) (y:int) => add x y;

and now eta is a normal felix function. The compiler gets confused
making a closure of add, whether or not an argument is given.

Of course, this can all be fixed (but I won't bother unless the feature
proves useful). [I did this thing just to relieve the boredom of writing docs :]


--
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. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_123012
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to