Rectangle уже определен как часть этого юниона. Он не может быть определен в другом модуле. Вот если бы он мог быть определен до определения юниона и после этого включен в юнион в другом модуле или включен в 2 разных юниона - это было бы что-то отличное от sealed trait
А можно пример где сначала где-то создается ректангл, вообще сам по себе отдельно от мира, а уже потом где-то в другой конструкции включается в юнион? Потому что сейчас я смотрю и вижу то же самое что написал Симон.
Возьмите ваш код на скала, и переведите его на F#, покажите как там автоматизированно можно получить желаемое повеедние Три независимых типа Один АДТ, который враппит их, и ЖСОН обёртка, которая автоматически делает то, что вы хотите