Предположим, у меня есть такой тип:
type Season =
| Spring
| Summer
| Autumn
| Winter
Я хочу иметь функцию next
которая возвращает следующий сезон:
let next s =
match s with
| Spring -> Summer
| Summer -> Autumn
| Autumn -> Winter
| Winter -> Spring
Есть два места, где я могу поставить эту функцию.
В названном модуле:
module Season =
let next s =
match s with
| Spring -> Summer
| Summer -> Autumn
| Autumn -> Winter
| Winter -> Spring
Или как статический член типа:
type Season =
| Spring
| Summer
| Autumn
| Winter
with
static member next s =
match s with
| Spring -> Summer
| Summer -> Autumn
| Autumn -> Winter
| Winter -> Spring
Каковы причины в пользу каждого подхода?