Я закончил проект, над которым работал, но хочу вернуться и почистить свой код. В этом случае я использовал изменяемую переменную, однако я хочу, чтобы в моем коде не было изменяемых переменных. Как бы я переписал этот раздел кода, чтобы вернуть bool, но не изменяемый?

let mutable duplicates = false

for el in (combo|>Seq.head) do
    let exists = Seq.exists (fun x -> x = el) (combo|>Seq.item 1)
    duplicates <- exists

Любая помощь будет оценена, ура!

2
TJ8 24 Апр 2017 в 11:40

2 ответа

Лучший ответ
let t = Seq.item 1 combo
let duplicates = Seq.head combo |> Seq.exists (fun el -> Seq.contains el t)

Применяются обычные предостережения об обработке seq таких действий.

4
ildjarn 24 Апр 2017 в 09:01
let s1 = combo |> Seq.head
let s2 = combo |> Seq.item 1
let duplicates = System.Linq.Enumerable.Intersect(s1, s2) |> Seq.isEmpty |> not
1
Lee 24 Апр 2017 в 08:57