Once I touched the interfaces subject it seems the time it was sufficient to change a syntax a bit to make some progress passed away — this weekend I finished overloading, next time I plan to tackle overriding.
I barely had time to make minor adjustments:
- interface name has to start with capital letter “I” (it is a requirement, not a convention),
- the root type in Skila is “
IObject
”, - there is multiple type inheritance (one class + multiple interfaces),
- I reversed and shortened Ruby syntax for mutators — “
x!ChangeMe()
” instead “x.ChangeMe!()
”, - and I made “
Void
” result type optional when declaring or defining a function — so it is more like Pascal procedure.
Once I deal with interfaces I have to redo almost entire backend — so far I relied on PHP classes but I think this won’t pay off. First of all PHP has only virtual methods, so it is a dead end for me no matter how I look at it. The second reason is JavaScript — its object model is so different, that sooner or later I would have to find common denominator among backend languages to save my time. I think I should be safe with using just structures, standalone functions and custom dispatcher.