2010-10-20 37 views
5
let is_sum_greater_than_10 list = 
    list 
    |> Seq.filter (filter) 
    |> Seq.sum 
    |> (10 >) 

Bu, derlenmiyor. Son satırdaki "|> (10>)" kısmına bakın, bunun sol tarafının ikili işleçler için sağa doğru pipetlenmesini sağlayacak bir yol var mı?Bunu F # yazmanın bir yolu var mı?

let is_sum_greater_than_10 list = 
    list 
    |> Seq.filter (filter) 
    |> Seq.sum 
    |> (<)10 

Ayrıca lambda uygulamasının bir eşdeğeri olarak görebilir:

sayesinde

+1

F # içinde Haskell benzeri "operatör bölümleri" yoktur; kabul edilen cevabın son örneğinde olduğu gibi bir lambda kullanın. – Brian

cevap

6

için (operatöre sembolü) sözdizimi kullanılarak < operatörün kısmi uygulamasını kullanarak :

let is_sum_greater_than_10 list = 
    list 
    |> Seq.filter (filter) 
    |> Seq.sum 
    |> (fun x y -> x < y)10 

ya da sadece bir lambda:

let is_sum_greater_than_10 list = 
    list 
    |> Seq.filter (filter) 
    |> Seq.sum 
    |> (fun y -> 10 < y) 
+1

bu yüzden '<='? –

+0

Hayır. OP sıkı bir karşılaştırma istiyor. – Stringer

+0

Aslında OP'nin '(>) 10' olmasını istediğime inanıyorum, çünkü bu“ x => 10> x ”değerine eşdeğerdir. – kvb

İlgili konular