F #: une façon d'utiliser les fonctions membres en tant que fonctions non liées?
-
26-09-2019 - |
Question
Y at-il un moyen de fonctions membres d'extrait, et les utiliser comme fonctions F #? Je voudrais pouvoir écrire ce qui suit:
mystring |> string.Split '\n' |> Array.filter (string.Length >> (=) 0 >> not)
Le code ci-dessus fonctionne si vous [laisser]
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)
La solution
Ceci est tout à fait similaire à une question que je posais il y a quelques jours (mais votre libellé est mieux). Le consensus semble être:
- Non.
- Peut-être la syntaxe
string#Split
,"foo"#Split
, ou tout simplement#Split
(déduire type) sera ajouté à l'avenir. Mais Don proposition de Syme que Tomas était liée à partir de 2007, donc je n » sais combien il est probable de se produire - probablement à peu près aussi probable que d'une syntaxe spécifique pour la paresse, je suppose que .
Edit:
Je suppose que "foo"#Split
pourrait aussi être écrit string#Split "foo"
. Je suppose que cela dépend de la souplesse avec vous définissez la syntaxe #
.
Autres conseils
Utilisez
(fun x -> x.Member ...)
pour l'instant. Par exemple
someString |> (fun s -> s.Split "\n") |> ...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow