iterais Funcionais do Scala com Implícit
Desculpe-me se isso já tiver sido solicitado em outro lugar. Eu tenho uma pergunta de sintaxe Scala envolvendo valores de função e parâmetros implícito
Estou confortável em usar implícitos com o recurso de curry do Scala. Por exemplo, se eu tivesse uma função soma e quisesse tornar o segundo argumento implícito:
scala> def sum(a: Int)(implicit b: Int) = a + b
sum: (a: Int)(implicit b: Int)Int
Existe uma maneira de fazer isso usando a sintaxe do valor da função? Ignorando o implícito por um momento, normalmente escrevo valores de função ao curry assim:
scala> val sum2 = (a: Int) => (b: Int) => a + b
sum: (Int) => (Int) => Int = <function1>
No entanto, a assinatura da função na segunda abordagem é muito diferente (o curry está sendo expresso explicitamente). Apenas adicionar a palavra-chave implícita em b não faz muito sentido, e o compilador também reclama:
scala> val sum2 = (a: Int) => (implicit b: Int) => a + b
<console>:1: error: '=>' expected but ')' found.
val sum2 = (a: Int) => (implicit b: Int) => a + b
^
lém disso, a soma da aplicação parcial da primeira abordagem para obter um valor de função também causa problema
scala> val sumFunction = sum _
<console>:14: error: could not find implicit value for parameter b: Int
val sumFunction = sum _
^
Isso me leva a acreditar que funções que possuem parâmetros implícitos devem ter os referidos parâmetros determinados quando o valor da função é criado, não quando o valor da função é aplicado posteriormente. É este realmente o caso? Você pode usar um parâmetro implícito com um valor de função?
Obrigado pela ajuda