В Haskell, если у меня есть список типизированных типов объединения, например:
example :: [Either Int Char]
example = [Left 3, Right 'b', Left 6, Left 9, Right 'c']
Я могу использовать небольшой "трюк", чтобы извлечь все результаты, соответствующие определенному шаблону:
lefts :: [Int]
lefts = [l | Left l <- example]
Однако, если я попытаюсь перевести это на F #, я получаю сообщение об ошибке:
let lefts = [for Choice1Of2 l in example -> l]
~~~~~~~~~~~~
Incomplete pattern matches on this expression. (...)
Это имеет большое значение (это может быть даже лучше, чем молча игнорирование значений Right
, таких как Haskell!), но в F # есть ли удобный способ извлечения (и совпадения) всех значений сопоставление определенного шаблона в списке/последовательности?