В F# и OCaml мне приходится писать много кода, например
type C = Blah of Whatever
let d = Blah (createWhatever ()) // so d is type C
...
let x = match d with | Blah b -> b
Я бы хотел, чтобы это
...
let x = peel d
Где пилинг будет работать для любого конструктора/дискриминатора.
Конечно, я не единственный, кого это раздражает.
edit: Хорошие ответы, но у меня нет представителя, чтобы проголосовать на них. Как насчет этой ситуации?
member self.Length = match self with | L lab -> lab.Length