Czy można to wyrazić w stylu bez punktów?
Biorąc pod uwagę następujące wyrażenie sumujące IEnumerable liczb:
let sum l = l |> Seq.reduce(+) //version a
czy można wyeliminować argument - tak?
let sum = Seq.reduce(+) //version b
Dostaję błąd od kompilatora F # (FS0030) i wydaje mi się, że pamiętam, że widziałem coś o „konwersji eta”, ale niestety moja wiedza na temat obliczeń lambda jest zbyt ograniczona, aby śledzić, w jaki sposób dotyczy konwersji eta.
Czy argument można wyeliminować jak w wersji b?
Czy ktoś mógłby mi wskazać literaturę, która wyjaśniałaby konwersję eta i jak mogłaby się ona pojawić w tym konkretnym fragmencie kodu?
FS0030:
stdin (1,5): błąd FS0030: ograniczenie wartości. Wartość „sum” została wywnioskowana z typowego typu val sum: („_a -> int), gdy„ _a:> seq Albo sprecyzuj argumenty jako „sum”, albo, jeśli nie chcesz, aby były ogólne, dodaj adnotację typu.