Можно ли это выразить в стиле free point?

Дано следующее выражение для суммирования IEnumerable чисел:

let sum l = l |> Seq.reduce(+)  //version a

Можно ли устранить аргумент - как так?

let sum = Seq.reduce(+)    //version b

Я получаю сообщение об ошибке от компилятора F # (FS0030) и, кажется, вспоминаю, что видел что-то об «eta-преобразовании», но, к сожалению, мои знания о lambda calc слишком ограничены, чтобы понять, как происходит eta-преобразование.

Можно ли исключить аргумент, как в версии b?

Кто-нибудь, пожалуйста, укажите мне литературу, которая объясняет eta-преобразование и как оно вступит в игру в этом конкретном куске кода?

FS0030:

стандартный ввод (1,5): ошибка FS0030: ограничение значения. Значение 'сумма' было выведено, чтобы иметь универсальный тип val sum: ('_a -> int), когда' _a:> seq Либо сделать аргументы для 'суммы' явными, либо, если вы не собираетесь использовать его как универсальный, добавить аннотацию типа.

Ответы на вопрос(3)

Ваш ответ на вопрос