And here was have it:
// define an interface with one method
interface A {
geta: unit -> int;
}
// extend it with a second method
interface B extends A {
getb: unit -> int;
}
// implement a class for the first interface A
object anA (a:int) implements A = {
omethod fun geta()=> a;
}
// implement a class for the extended interface B,
// by inheriting from the class 'anA' we just defined
object anB(a:int, b:int) extends anA(a) implements B = {
omethod fun getb()=> b;
}
// Apply the class constructor to make an object
var bb = anB(22,33);
// prove it does what we expected
println$ bb.geta(), bb.getb();
Ok, so: I'm thinking of tweaking the syntax more of course.
'face' instead of interface because I've been interfacing
with facebook for too long.
'obj' instead of 'object' so no one can claim Felix is actually
object oriented.
'omethod' need to be replaced. Perhaps "method" or
just "meth" would do, though the latter suggests the drug
of choice for the very poor or the very rich.
Now, I have to say I hate { .. } more and more, tempted to do
face .. endface
obj ... endobj
instead. Any suggestions to improve the look and feel most welcome.
Note the ugly "=" sign. That comes from
fun f(x:int) : int = { .. }
The = is required here because
int { .. }
is a valid expression syntactically. I like
fun f(x:int) : int
begin ... end
better but I'm archaic, Pascal was my first language :)
Actually, I'm not sure why it isn't needed in:
interface A extends B { .. }
since an interface is nothing more than a typedef of a record,
there's no reason that B should be a name, it can be any
expression (that resolves to a record type).
Maybe the syntax is a left over from the old Ocamlyacc parser,
which was only LALR(1). Dypgen might handle it better,
allow the = to be elided.
Anyhow .. as they say .. enjoy! :)
--
john skaller
[email protected]
http://felix-lang.org
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language