Хорошо, поэтому для большинства операций LINQ есть эквивалент F #.(Как правило, в модуле Seq, поскольку Seq = IEnumerable)
Я не могу найти эквивалент IEmumerable.Single
, я предпочитаю Single
вместо First
(то есть Seq.find), потому что этоболее оборонительный - он утверждает, что я ожидаю состояние.
Так что я вижу пару решений (кроме использования Seq.find).(Они могут быть написаны как методы расширения)
Сигнатура типа для этой функции, которую я вызываю только, является
('a->bool) -> seq<'a> -> 'a
let only = fun predicate src -> System.Linq.Enumerable.Single<'a>(src, predicate)
let only2 = Seq.filter >> Seq.exactlyOne
only2
, но не будеткомпилировать (есть какие-нибудь подсказки?).