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

Esto no se compila. Observando la última línea "|> (10>)" ¿hay alguna manera de escribir esto de manera que la izquierda se canaliza hacia la derecha para los operadores binarios?¿Hay alguna manera de escribir esto en F #?

Gracias

+1

No hay "secciones de operador" similares a Haskell en F #; use una lambda, como en la última muestra de la respuesta aceptada. – Brian

Respuesta

6

Se puede utilizar una aplicación parcial del operador <, utilizando la sintaxis (operador-símbolo):

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

también se puede ver esto como un equivalente de una aplicación de lambda :

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

o simplemente un lambda:

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

¿podría ser '<='? –

+0

No. OP quiere una comparación estricta. – Stringer

+0

Creo que el OP realmente quiere '(>) 10', ya que esto daría como resultado el equivalente a' diversión x -> 10> x'. – kvb

Cuestiones relacionadas