Practical subtyping for Curry-Style languages