Compared with ML-family strictly typed languages
#haskell and
#caml, contracts feel like writing parts of your own typechecker.
Disadvantage: you write your own typechecker.
Advantage: you don't need to write it all the time (gradual typing) and you choose the level of expressiveness as you want.
Feels great for research and prototyping.