Считайте, что
type Foo =
| I of int
| S of string
let test = [ I(5); I(9); I(7)]
Это работает, но теперь я хочу, чтобы 'test' тоже относился к типу Foo и все еще представлял собой список из I или S. Например.
let test = L( [ I(5); I(9); I(42) ] ) //works!
let test2 = L( [ I(5); I(9); S("stuff") ] ) //type error
let test3 = L( [ I(5); I(9); L([]) ] ) //type error
Я пытаюсь это ..
type Foo =
| I of int
| S of string
| L of 'T list when 'T :> Foo
Я знаю, что это, очевидно, не работает. Мне было просто написать что-то естественное.
Большое спасибо за помощь !!