I started using Fantom and found a title bug. Maybe you remember me from the early days of NF ax. It is a nice language, I must say the scope thing in fantom is a superb feature.
Here is the thing I found.
class SomeClass {
|XElem node -> Bool| ftemp;
new make(|XElem node -> Bool| ftemp)
{
this.ftemp = ftemp;
}
override Void check(XElem node)
{
//If have to add this line to make it work otherwise I get the error
// "Expected method, not field 'Test_0::PassTest.ftemp'"
|XElem node -> Bool| ftemp := this.ftemp;
if(ftemp(node))
System.out.printLine(node);
}
}
I was using version 1.0.47
brianMon 4 Jan 2010
Hi Jesse,
The way the compiler currently works is that you are required to use parens to show your intent to first get the field, then call it like a method:
funcField(args) // error
(funcField)(args) // ok
Sometimes I find that rather annoying myself. Allowing a func field to be called like a method might actually be a better design.
Let's make it an official proposal: if a field is typed as a func, then you can call it like a method. That would obey Bertrand Meyer's uniform access principle better.
Comments?
katoxMon 4 Jan 2010
+1 on that. I think this will also get rid of confusing func()(realArg1, realArg2).
KevinKelleyMon 4 Jan 2010
+1!
brianMon 4 Jan 2010
I think this will also get rid of confusing func()(realArg1, realArg2).
If the slot is a method, that will still be required, because the first set of () bind as the methods arguments.
qualidafialTue 5 Jan 2010
+1 from me too
lbertrandTue 5 Jan 2010
+1 - like the simplification
brianTue 5 Jan 2010
Promoted to ticket #895 and assigned to brian
I will make field() call the func if the field is declared as a Func.
There will be no changes to how methods which return functions work (which includes fields that override methods).
qualidafialTue 6 Jul 2010
ping
brianWed 7 Jul 2010
Renamed from Scope as field is not detected as function to Allow () operator to be used on func fields
jessevdam Sun 3 Jan 2010
I started using Fantom and found a title bug. Maybe you remember me from the early days of NF ax. It is a nice language, I must say the scope thing in fantom is a superb feature.
Here is the thing I found.
class SomeClass {
}
I was using version 1.0.47
brian Mon 4 Jan 2010
Hi Jesse,
The way the compiler currently works is that you are required to use parens to show your intent to first get the field, then call it like a method:
Sometimes I find that rather annoying myself. Allowing a func field to be called like a method might actually be a better design.
Let's make it an official proposal: if a field is typed as a func, then you can call it like a method. That would obey Bertrand Meyer's uniform access principle better.
Comments?
katox Mon 4 Jan 2010
+1 on that. I think this will also get rid of confusing
func()(realArg1, realArg2)
.KevinKelley Mon 4 Jan 2010
+1!
brian Mon 4 Jan 2010
If the slot is a method, that will still be required, because the first set of
()
bind as the methods arguments.qualidafial Tue 5 Jan 2010
+1 from me too
lbertrand Tue 5 Jan 2010
+1 - like the simplification
brian Tue 5 Jan 2010
Promoted to ticket #895 and assigned to brian
I will make
field()
call the func if the field is declared as a Func.There will be no changes to how methods which return functions work (which includes fields that override methods).
qualidafial Tue 6 Jul 2010
ping
brian Wed 7 Jul 2010
Renamed from Scope as field is not detected as function to Allow () operator to be used on func fields
brian Wed 7 Jul 2010
Ticket resolved in 1.0.54
Its done!