Scala ha sido calificado como complejo con sus numerosas funciones establecidas por muchos de mis colegas y algunos incluso culpan a todas esas nuevas características. Si bien la mayoría de los programadores conocen las características OO, y al menos las decentes también conocen la programación funcional, hay una característica en particular en Scala para la que no conozco sus orígenes históricos.
Dado que un mantra importante de nuestra profesión es no reinventar la rueda, estoy bastante seguro de que Scala no tiene ninguna característica real nunca antes vista, pero tengo que corregirlo si es necesario.
Para llegar a la pregunta real, aunque conozco los orígenes de la mayoría de las características de Scala, nunca antes había visto algo así como sus implicit
declaraciones. ¿Existen otros idiomas (¡más antiguos!) Que también brinden esta función?
¿Tiene sentido distinguir los diferentes casos de implicidades (ya que pueden originarse de diferentes fuentes), a saber, conversiones implícitas y parámetros implícitos?
fuente
Respuestas:
No estoy de acuerdo con la respuesta de Brian sobre esa otra pregunta.
Hasta donde yo sé, no hay un concepto implícito en ningún otro idioma. El historial de cambios para Scala implica que las implicaciones eran una generalización de los límites de la vista, y un límite de vista es, en sí mismo, una generalización de la conversión automática de tipos, lo cual es muy común.
Implicits luego habilitó las clases de tipos, pero me sorprendería mucho si esa fuera la intención original.
Editar
Las notas de la versión de Scala 2.0 (2006) dicen:
Eso no significa, por supuesto, que los parámetros implícitos se introdujeron con el objetivo de reemplazar las vistas.
Sin embargo, a Odersky le gusta claramente cuando una vez que el concepto puede reemplazar a varios. En ese sentido, bien puede ser el caso de que Odersky quisiera clases de tipos, pero no quería introducir un mecanismo para manejar eso exclusivamente y, por lo tanto, se le ocurrió algo más que le permitiera eliminar un concepto (Vistas) y reemplazarlo. con un concepto más genérico que maneja vistas y clases de tipos.
En caso de que alguien esté interesado, las clases de tipo de Poor Man, a las que Brian hizo referencia en Stack Overflow, también tienen fecha de 2006. Claramente, Odersky era consciente del vínculo entre las implicidades y las clases de tipos cuando las presentó.
Sin embargo, mantengo mi reclamo. :-)
fuente
Implicit
en scala significa dos cosas diferentesimplict
palabra clave) que es anterior a la primera versión de Scala en aproximadamente un año.fuente
Hice una pregunta similar sobre Stack Overflow. La respuesta más votada y otras sugieren que los orígenes están en Haskell.
fuente