The type system has some controversial aspects, in particular an explicit choice not to bother about soundness. If I understand correctly, assigning an apple to a variable holding bananas would cause an error, but assigning an unknown fruit to a variable holding bananas would not. The idea is to pick up the egregious errors and otherwise leave the programmers alone.
Hat tip to Lambda the Ultimate, which has several interesting discussions in the comments.
The jlouis blog has a detailed breakdown of what's in the language. Delightfully, he includes the following homage to Blade Runner: