// module M1 import "Prelude" foo :: Ring a => Boolean -> a -> a foo True v = v+1 foo False v = v+1 -- // module M2 import "Prelude" foo :: Ring a => String -> a -> a foo cond v = if cond=="true" then v+1 else v-1 -- import "Prelude" import "M1" import "M2" main = foo False (foo "True" 10) :: Integer -- 10