Может кто-нибудь объяснить, почему второй пример ниже не будет компилироваться?
'Test 2' дает ошибку FS0670: этот код не является достаточно общим. Переменная типа ^ а не может быть обобщена, потому что она не сможет выйти из ее области. ". Я не понимаю это сообщение об ошибке.
// Test 1
type test1<'a> = | A of 'a
with
override t.ToString() =
match t with
| A a -> a.ToString()
// Test 2
type test2<'a> = | A of 'a
with
override t.ToString() =
match t with
| A a -> string a
// Test 3
type test3<'a> = | A of 'a
with
override t.ToString() =
match t with
| A a -> string (a :> obj)