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

Questo non viene compilato. Guardando l'ultima riga "|> (10>)" c'è un modo per scrivere questo in modo che la sinistra sia pipeline a destra per gli operatori binari?C'è un modo per scrivere questo in F #?

Grazie

+1

Non ci sono "sezioni operatore" di tipo Haskell in F #; usa un lambda, come nell'ultimo campione della risposta accettata. – Brian

risposta

6

È possibile utilizzare un'applicazione parziale dell'operatore <, utilizzando la sintassi (operatore-simbolo):

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

Si può anche vedere questo come un equivalente di una domanda lambda :

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

o semplicemente un lambda:

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

potrebbe essere '<='? –

+0

No. OP vuole un confronto rigoroso. – Stringer

+0

Credo che l'OP voglia effettivamente '(>) 10', poiché ciò risulterebbe nell'equivalente di' fun x -> 10> x'. – kvb

Problemi correlati