Ответ 1
Немного проще:
let contains x = Seq.exists ((=) x)
как проверить, содержится ли элемент в последовательности? Я ожидал некоторых Seq.contains, но я не мог его найти. Благодаря
ИЗМЕНИТЬ: Или, для более простой задачи, как сделать разницу между двумя последовательностями? Например, получая все элементы в списке, который не принадлежит другому (или что делать)?
Немного проще:
let contains x = Seq.exists ((=) x)
Seq.exists
let testseq = seq [ 1; 2; 3; 4 ]
let equalsTwo n = (n = 2)
let containsTwo = Seq.exists equalsTwo testseq
Set
- ваш друг здесь:
let a = set [0;1;2;3]
let b = set [2;3;4;5]
let c = a - b
let d = b - a
let e = Set.intersect a b
let f = a + b
>
val c : Set<int> = seq [0; 1]
val d : Set<int> = seq [4; 5]
val e : Set<int> = seq [2; 3]
val f : Set<int> = seq [0; 1; 2; 3; ...]
Дэнни
(Другой вопрос, другой ответ.)
Это работает, но я не думаю, что это самый идеальный способ сделать это - (вам нужно подождать, пока США не проснутся, чтобы узнать):
let s1 = seq [ 1; 2; 3; 4 ]
let s2 = seq [ 3; 4; 5; 6 ]
seq {
for a in s1 do
if not (Seq.exists (fun n -> n = a) s2) then
yield a
}
Seq.exists снова, но с немного отличающимся синтаксисом -
let testseq = seq [ 1; 2; 3; 4 ]
let testn = 2
testseq |> Seq.exists (fun x -> x = testn)
См. функцию MSDN F #: Seq.exists: https://msdn.microsoft.com/en-us/library/ee353562.aspx
Много других хороших там тоже!