В 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