Isso pode ser expresso em estilo livre ponto?
Dada a seguinte expressão para somar um IEnumerable de números:
let sum l = l |> Seq.reduce(+) //version a
é possível eliminar o argumento - como assim?
let sum = Seq.reduce(+) //version b
Eu recebo um erro do compilador F # (FS0030) e parece que me lembro de ter visto algo sobre uma "conversão eta" estar envolvido, mas infelizmente meu conhecimento de lambda calc é muito limitado para acompanhar como a conversão eta está envolvida.
O argumento pode ser eliminado como na versão b?
Alguém por favor me apontaria a literatura que explicaria uma conversão de eta e como entraria em jogo neste pedaço de código particular?
FS0030:
stdin (1,5): erro FS0030: Restrição de valor. O valor 'sum' foi inferido para ter um tipo genérico val sum: ('_a -> int) quando' _a:> seq Torne os argumentos para 'sum' explícitos ou, se você não pretende que seja genérico, adicione uma anotação de tipo.