I guess you need it to mirror the value shadowing on the implementation side : include Foo let bar = baz This is legal if Foo already defines bar, and most of the time desired and useful. In the interface file you'll want to write : include FOO (* Foo's signature *) val bar : ...