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

To nie kompiluje się. Lookng na ostatnim wierszu "|> (10>)" Czy istnieje sposób, aby napisać to tak, że lewy jest potokowany w prawo dla operatorów binarnych?Czy istnieje sposób zapisu tego w F #?

Dzięki

+1

W sekcji F # nie ma "sekcji operatorskich" typu "Haskell"; użyj lambda, jak w ostatniej próbce zaakceptowanej odpowiedzi. – Brian

Odpowiedz

6

można wykorzystywać częściowe stosowanie operatora < z wykorzystaniem składni (operator symbol):

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

Można również zobaczyć jako ekwiwalent aplikacji lambda :

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

czy tylko lambda:

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

Czy to powinno być '<='? –

+0

Nie. OP chce ścisłego porównania. – Stringer

+0

Wierzę, że OP faktycznie chce '(>) 10', ponieważ spowodowałoby to równowartość' zabawy x -> 10> x'. – kvb

Powiązane problemy