2010-06-11 5 views
4

Existe-t-il un moyen d'extraire des fonctions membres et de les utiliser comme fonctions F #? Je voudrais pouvoir écrire ce qui suit:F #: un moyen d'utiliser les fonctions membres comme des fonctions non liées?

mystring |> string.Split '\n' |> Array.filter (string.Length >> (=) 0 >> not) 

Le code ci-dessus fonctionne si vous [LET]

let mystring = "a c\nb\n" 
let stringSplit (y:char) (x:string) = x.Split(y) 
let stringLength (x:string) = x.Length 
mystring |> stringSplit '\n' |> Array.filter (stringLength >> (=) 0 >> not) 

Répondre

5

C'est tout à fait similaire à a question I asked a few days ago (mais votre libellé est mieux). Le consensus semble être:

  1. No.
  2. Peut-être que la syntaxe string#Split, "foo"#Split, ou tout simplement #Split (inférée type) sera ajouté à l'avenir. Mais Tomas a été lié à 2007, donc je ne sais pas à quel point il est probable qu'il se produise - probablement aussi probablement qu'une syntaxe spécifique pour la paresse, je suppose.

Edit:

Je suppose que "foo"#Split peut également être écrit comme string#Split "foo". Je suppose que cela dépend de la souplesse avec laquelle vous définissez la syntaxe #.

3

Utilisez

(fun x -> x.Member ...) 

pour l'instant. Par exemple

someString |> (fun s -> s.Split "\n") |> ... 
Questions connexes