Added new statement:
with
private-defins
do
public-defns
done
The definitions in private-defns are made localised to the public-defns.
For example:
var x = 99;
with
var x = 2;
do
var y = x;
done
println x,y;
prints (99,2)
This is necessary in cases like:
var re = RE2 "some-regex";
fun f(x:string) => Match (re, ... x ... );
where we want re to be compiled once, so it cannot be put in f,
but the way it is written above re is in scope where f is, whereas it's
intended to be private to f. The solution is:
with
var re = RE2 "some-regex";
do
fun f(x:string) => Match (re, .. x .. );
done
The implementation is
class dymmy {
private pdef1; private pdef2; ...
public-defns
}
inherit dymmy;
where pdef1, pdef2, etc are the private defns.
As an artefact of this implementation private definitions in public-defns
won't be "exported" to the surrounding scope either. It's tempting to define
do .. done
as "with ; do .. done" however whilst this makes sense, it will not be the same
as a "do done" elsewhere, for example in:
var a = 1;
while a < 3 do
private var b = a;
println$ a;
++a;
done
println$ b;
it all works: b is in scope outside the loop. (maybe it shouldn't be!)
--
john skaller
[email protected]
http://felix-lang.org
------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language