В F# 10 добавили важное правило: теперь нельзя объявлять модуль внутри определения типа с тем же уровнем отступа, как сам тип.
Это выглядело как вложенный модуль, но на самом деле модуль создавался на одном уровне с типом — то есть был соседом, а не дочерним элементом.
Пример из старого кода:
type U =
| A
| B
module M = // на самом деле не вложенный модуль
let f () = ()
Правильный код:
type U =
| A
| B
module M =
let f () = ()
Это предотвращает частую ошибку, когда модуль кажется «вложенным» в тип, но на самом деле не является таковым.
🔸 Математика для Data Science
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
🐸Библиотека шарписта
#sharp_view