половина магии завтипов в том, что она вынуждает нас писать проверки, там где ранее мы бы забили, и из этих проверок выводит больше информации
x <- getInt
if x == 0 then <вот тут уже статически известно что x = 0 и можно отправлять в код, который требует 0> else ..