Разрешаю убрать
рванёт
Тогда непонятно чего хочется. Откуда убрать Some? Чтобы руками его не оборачивать в вызов конструктора? Совсем не передавать?
есть пачка паттернов с одинаковой сигнатурой, хочется избавиться от постоянного написания Some fiile ожидал что есть что-то вроде match foo with | (Bar | Baz) (Some bat) -> ...
Ну это тривиально делается: let (|MyPat|_|) input = match input with | CaseA p -> Some p | CaseB p -> Some b | _ -> None Конкретно в твоём случае можно не оборачивать результат в Some, тогда он будет сам на наличие file фильтровать.
думал можно как-то проще переписать мой вариант выше, но похоже придётся ещё пачку паттернов писать спасибо
Ну дальше уже только какие-то неалгебраические подходы могут вывезти. Если без паттернов, то могу только file предложить вместо (Some file), после чего либо when file.IsSome -> file.Value, либо вложенный матч.
Обсуждают сегодня