Можно ли это выразить в стиле 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 Либо аргументируйтесумма» явный или, если вы не собираетесь использовать его как общий, добавьте аннотацию типа.