Scala foi chamado de complexo com seu rico conjunto de recursos por muitos de meus colegas e alguns até culparam todos esses novos recursos. Embora a maioria dos programadores esteja ciente dos recursos de OO, e pelo menos os decentes também conheçam a programação funcional, há um recurso em particular no Scala para o qual não conheço suas origens históricas.
Dado que um dos principais mantras de nossa profissão é não reinventar a roda, estou bastante confiante de que Scala não possui nenhum recurso real inédito, mas devo ser corrigido nesse caso, se necessário.
Para chegar à pergunta real, enquanto estou ciente das origens da maioria dos recursos de Scala, nunca vi algo parecido com suas implicit
declarações antes. Existem outros idiomas (mais antigos!) Por aí que também oferecem esse recurso?
Faz sentido distinguir os diferentes casos de implícitos (como eles podem se originar de diferentes fontes), nomeadamente conversões implícitas e parâmetros implícitos?
Respostas:
Eu discordo da resposta de Brian nessa outra pergunta.
Até onde eu sei, não há implícito conceito em nenhuma outra linguagem. O histórico de alterações do Scala implica que implícitos eram uma generalização dos limites de exibição, e um limite de exibição é, por si só, uma generalização da conversão automática de tipo, o que é realmente muito comum.
Os implícitos ativavam as classes de tipo, mas eu ficaria muito surpreso se essa fosse a intenção original.
Editar
As notas de versão do Scala 2.0 (2006) dizem:
Isso não significa, é claro, que parâmetros implícitos foram introduzidos com o objetivo de substituir visualizações.
No entanto, Odersky claramente gosta quando o conceito pode substituir vários. Nesse sentido, pode muito bem ser que Odersky desejasse classes de tipo, mas não quisesse introduzir um mecanismo para lidar com isso exclusivamente e, portanto, surgiu com outra coisa que lhe permitiu remover um conceito (Views) e substituí-lo com um conceito mais genérico que lida com visualizações e classes de tipo.
Caso alguém esteja interessado, as Classes de tipo de pobre homem, mencionadas por Brian no Stack Overflow, também são de 2006. Claramente, Odersky estava ciente do vínculo entre implícitos e classes de tipos quando os apresentou.
No entanto, eu mantenho minha reivindicação. :-)
fonte
Implicit
em Scala significa duas coisas diferentesimplict
palavra - chave) que antecede a primeira versão do Scala por cerca de um ano.fonte
Fiz uma pergunta semelhante no Stack Overflow. A resposta mais votada e outras sugerem que as origens estão em Haskell.
fonte