In F# was bedeutet die >> Betreiber bedeuten?
Bemerkte ich in einiger code in diesem Beispiel enthalten, dass die >> Betreiber:
let printTree =
tree >> Seq.iter (Seq.fold (+) "" >> printfn "%s")
Was hat das >> Betreiber bedeuten/machen?
EDIT:
Vielen Dank, jetzt ist es viel klarer.
Hier mein Beispiel, das ich erzeugte, um den Dreh raus:
open System
open System.IO
let read_lines path = File.ReadAllLines(path) |> Array.to_list
let trim line = (string line).Trim()
let to_upper line = (string line).ToUpper()
let new_list = [ for line in read_lines "myText.txt" -> line |> (trim >> to_upper) ]
printf "%A" new_list
- Sie können noch präziser jetzt: ... lassen new_list2 = read_lines "myText.txt" |> Liste.anzeigen (trim >> to_upper) ... Dies ist die form, in der ich Schreibe, Datenverarbeitung selbst.
- Genial, so konnte ich daraus : lass new_list2 = Datei.ReadAllLines(path) |> Array.anzeigen (trim >> to_upper) ... sehr ordentlich 🙂 danke
- Sehen Sie, Sie sind das lernen schon 🙂
- hehe ja danke 🙂 ich finde es eine sehr interessante Erfahrung, zu lernen, die funktionalen Paradigma kommt aus einem OO-Paradigma, hintergrund.
- Karte f >> map g = map (f >> g). Und letzteres ist schneller.
- Siehe auch stackoverflow.com/questions/858989/semantics-of-operator-in-f
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist die Funktion, die Zusammensetzung operator.
Mehr info auf Chris Smith ' s Beitrag.
Den
>>
- operator komponiert zwei Funktionen, sox |> (g >> f) = x |> g |> f = f (g x)
. Es gibt auch andere Betreiber<<
komponiert, die in die andere Richtung, so dass(f << g) x = f (g x)
, was kann natürlicher sein, in einigen Fällen.Laut F# - Symbol und Referenz-Operator es Vorwärts-Funktion Zusammensetzung operator.
Die Zusammensetzung Operatoren
<<
und>>
sind, verwenden Sie zum verknüpfen von zwei Funktionen, so dass das Ergebnis des einen wird zum input des anderen. Da Funktionen auch Werte, sofern nichts anderes beachten, Sie werden als solche behandelt, so dass die folgenden Ausdrücke sind äquivalent:f1 f2 f3 ... fn x = (..((f1 f2) f3) ... fn) x
Insbesondere
f2, f3, ...fn
undx
behandelt werden, als Werte und sind nicht ausgewertet werden, bevor es als Parameter übergeben, um Ihre vorhergehenden Funktionen. Manchmal ist das, was Sie wollen, aber andere Zeiten, die Sie angeben möchten, dass dieresult
einer Funktion ist die Eingabe des anderen. Dies kann realisiert werden mit der Komposition von Operatoren<<
und>>
so:(f1 << f2 << f3 ... << fn) x = f1(f2(f3 ... (fn x )..)
Ähnlich
(fn >> ... f3 >> f2 >> f1) x = f1(f2(f3 ... (fn x )..)
Da die Zusammensetzung operator gibt eine Funktion, die expliziten parameter
x
ist nicht erforderlich, anders als in der pipe-Operatorenx |> fn ... |> f1
oderf1 <| ... fn <| x
Dass ist eine Funktion der Zusammensetzung, verwendet für partielle Anwendung