Monthly Archives: June 2015

Hello world! — finally

It sounds funny but for me it is a historic moment — today I compiled Skila program and it was successfully executed. As the title says it is nothing special:

def main()
  let s = "Hello world!";
  System.Terminal.stdOut.writeLine(s);
end

but few classes are already involved. Plenty of hard work ahead of me (starting from implicit outgoing type conversion) — but today I celebrate!

Advertisement
Tagged

`return` with no `else` — no more papercuts

I understand this or that omission in given language — not enough resources, somebody was not bitten by specific error, but it is strange when you see on multiple occasions a guideline which goes against software safety. Consider such code:

def foo() Int
  if x > y then
    return 17;
  end
  return 44;
end

Such code is legit in every language I know, what’s more it is advised way to write according to Mozilla guidelines and Go as well ¹. I admit it is more pleasing for the eye than version with added explicit `else`, but when it is time to refactor the code it is way too easy to make a stupid mistake like this:

def foo() 
  if x > y then
    my_flag = 17;
  end
  my_flag = 44;
end

I noticed it because I was hit by it — you don‘t have clear mind all the time. And since Skila is designed to prevent exactly this kind of errors (“stupid mistakes”) I am about to add not even an opposite guideline, but simply a check — any flow interruption instruction has to be followed with `else` branch. Safety first.


¹ Read more: “No-else-after-return” considered harmful, Effective Go.

Tagged , , , ,