SMS dit: Typed Contracts for Functional Programming