Ich versuche, den Punkt freie Form von f x y = 3 + y/x
in Haskell herauszufinden. Ich dachte, es wäre f = (3.0+) . flip (/)
, aber die Antwort ist f2 = curry $ (3.0+) . (uncurry $ flip (/))
, das ist das gleiche wie f1 = curry ((3.0+) . (uncurry (flip (/))))
, z.B. die antwort bekam ich aber mit uncurry vorher flip und curry am anfang.f x y = 3 + y/x in Punkt freie Form
Ich sehe, wie diese Version funktioniert, aber ich bin mir nicht sicher, warum die Curry und Uncurry-Funktionen benötigt werden, und warum meine Version nicht funktioniert? Die Art von (3.0+)
ist a -> a
, die ich dachte, würde funktionieren, wenn Sie diese Funktion mit dem Ergebnisformular flip (/)
über Funktionszusammensetzung gefüttert, aber (3.0+) . flip (/) 2 10
führt zu einem Fehler (warum?) Und ergibt nicht 8. Ist es nicht redundant zu uncurry und dann wieder curry?
https : //hackage.haskell.org/package/pointfree – Hapal