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

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

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

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

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

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

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

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

FS0030:

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

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

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