Ich habe eine Funktion, die ich ziemlich häufig benutze, die mir erlaubt, meinen Code in einer Weise zu schreiben, die mir natürlicher erscheint.Haskell funktioniert von links nach rechts
infixl 6 $:
($:) :: a -> (a -> b) -> b
a $: f = f a
Dies lässt mich wie etwas tun
let x = getData
$: sort
$: group
$: aggregate
statt
let x = aggregate
$ group
$ sort
$ getData
ich vor kurzem erfahren, dass Clojure so etwas wie dies in (ich weiß nicht viel Clojure gebaut hat, aber Ich denke, es würde (-> getData sort group aggregate)
geschrieben werden?) Das lässt mich fragen, ob Haskell es auch eingebaut hat. Hoogle doesn't have any results obwohl.
Gibt es Standard-Bibliotheken mit etwas ähnliches enthalten? Es macht wahrscheinlich meinen Code schwer für andere zu lesen, wenn ich einen solchen gemeinsamen Teil habe, ist idiosynkratisch.
Meine Präferenz ist diese Operation '#' per OOHaskell zu nennen, da es im Grunde der gleiche Vorgang wie Methodenauswahl auf Objekte und die '#' ist der Betreiber dafür verwendeten in OCaml. Alternativ können wir # # auch kopieren, indem wir '|>' –
Diagramme verwenden. – Long
Es gab einen Vorschlag für die Einführung von 'flip ($)' in Data.Function, aber es wurde fallengelassen, weil kein Konsens darüber erzielt werden konnte, ob so etwas nützlich wäre (im Gegensatz zu Anfänger verwirren etc.). Hier ist die Diskussion: http://markmail.org/message/vsplpb7aajp7goqo?q=python – David