Von this answer lernt man, wie man die Funktion \x y z -> f x (g y z)
sinnlos in Haskell implementiert, wo f
und g
Funktionen sind. Und meine Frage istWie kann man f (g x) (h x) punktfrei in Haskell implementieren?
Wie schreibe ich die Funktion
\x -> f (g x) (h x)
in einer pointfree Weise in Haskell? Hier sindf
g
h
Funktionen, für dief (g x) (h x)
definiert ist.
Die Idee, die ich derzeit im Auge habe, ist etwas wie folgt.
uncurry f (mapTuple ($ x) (g, h))
Aber mehrere Versuche zeigen, dass dies irreführend ist; selbst der Teil map ($ x) [g, h]
ist verdächtig: Was, wenn g
und h
unterschiedliche Bereiche haben?
Darüber hinaus ist Lesbarkeit nicht zu viel ein Problem hier.
Jede Hilfe wird herzlichst geschätzt.
Das ist nur 'liftA2 f g h '. – melpomene
Danke für den Vorschlag. Aber ich habe Kopfschmerzen zu verstehen, was 'applicative' ist. Vielleicht auch anders, ohne "Applicative" zu sein? Danke immer noch. :) – awllower
Sicher: 'liftM2 f g h' :-) – melpomene