Aktywny wzór złamany w F # 3.0

Ten aktywny wzorzec kompiluje się z F # 2.0:

let (|Value|_|) value = // 'a -> 'T option
  match box value with
  | :? 'T as x -> Some x
  | _ -> None

ale w F # 3.0 emituje błąd:

Aktywny wzór „| Wartość | _ |” ma typ wyniku zawierający zmienne typu, które nie są określone przez dane wejściowe. Powszechną przyczyną jest sytuacja, w której nie podano przypadku wyniku, np. 'let (| A | B |) (x: int) = A x'. Można to naprawić za pomocą ograniczenia typu, np. 'let (| A | B |) (x: int): Choice = A x'

Próbowałem:

let (|Value|_|) value : 'T option = ...

i:

let (|Value|_|) (value: 'U) = ...

Jak to naprawić?

Środowiska: Visual Studio 2012 (RTM) i FSI v11.0.50727.1

EDIT: Oto prostsze podejście:

let (|X|) x = unbox x

questionAnswers(4)

yourAnswerToTheQuestion