Kann man das in point free style ausdrücken?
Geben Sie den folgenden Ausdruck ein, um eine IEnumerable von Zahlen zu summieren:
let sum l = l |> Seq.reduce(+) //version a
ist es möglich, das argument zu beseitigen - wie so?
let sum = Seq.reduce(+) //version b
Ich erhalte eine Fehlermeldung vom F # -Compiler (FS0030) und erinnere mich an eine "Eta-Konvertierung", aber leider sind meine Kenntnisse über Lambda Calc zu begrenzt, um zu verfolgen, wie die Eta-Konvertierung erfolgt.
Kann das Argument wie in Version b beseitigt werden?
Würde mich bitte jemand auf Literatur verweisen, die eine eta-Konvertierung erklärt und wie sie in diesem bestimmten Codeteil ins Spiel kommt?
FS0030:
stdin (1,5): Fehler FS0030: Wertebeschränkung. Es wurde angenommen, dass der Wert 'sum' den generischen Typ val sum hat: ('_a -> int) when' _a:> seq. Geben Sie entweder explizit die Argumente für 'sum' an, oder, falls Sie nicht beabsichtigen, dass es generisch ist, Fügen Sie eine Typanmerkung hinzu.