Orígenes históricos de los implícitos de Scala

14

Scala ha sido llamado complejo con su rico conjunto de características por parte de muchos de mis colegas y algunos incluso culparon a todas esas características nuevas . Si bien la mayoría de los programadores son conscientes de las características de OO, y al menos los decentes también conocen la programación funcional, hay una característica en particular en Scala para la cual no conozco sus orígenes históricos.

Dado que un importante mantra de nuestra profesión es no reinventar la rueda, estoy bastante seguro de que Scala no tiene ninguna características inauditas de antes, pero debo corregirlas en este caso si es necesario.

Para llegar a la pregunta real, aunque estoy al tanto de los orígenes de la mayoría de las funciones de Scala, nunca antes había visto algo así como sus declaraciones implicit . ¿Hay otros idiomas (más antiguos) por ahí que también proporcionen esta función?

¿Tiene sentido distinguir los diferentes casos de implícitos (ya que pueden provenir de diferentes fuentes), es decir, conversiones implícitas y parámetros implícitos?

    
pregunta Frank 31.05.2012 - 08:52

3 respuestas

9

No estoy de acuerdo con la respuesta de Brian sobre esa otra pregunta.

Por lo que sé, no hay ningún 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 vista, y un límite de vista es, en sí misma, una generalización de la conversión automática de tipos, que es muy común.

Implicits habilitó las clases de tipo, pero me sorprendería mucho si esa fuera la intención original.

Editar

Las notas de la versión para Scala 2.0 (2006) dicen:

  

Las vistas en Scala 1.0 han sido reemplazadas por el concepto más general de   parámetros implícitos

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 que una vez el concepto pueda reemplazar a varios. En ese sentido, bien puede ser que Odersky quisiera clases de tipo, pero no quería introducir un mecanismo para manejar eso exclusivamente, y, por lo tanto, se le ocurrió algo más que le permitió eliminar un concepto (Vistas) y reemplazarlo con un concepto más genérico que maneja tanto las vistas como las clases de tipo.

En caso de que alguien esté interesado, las Clases de tipo de hombre pobre, a las que Brian hace referencia en Stack Overflow, también están fechadas en 2006. Claramente, Odersky estaba al tanto del vínculo entre los implícitos y las clases de tipos cuando los presentó.

Sin embargo, estoy a favor de mi reclamo. :-)

    
respondido por el Daniel C. Sobral 01.06.2012 - 02:36
4

Implicit en scala significa dos cosas diferentes

  1. Parámetros implícitos. Estos aparecieron en Haskell, y tal vez otros idiomas primero. Pruebas de apoyo: Este documento de 2000 y Documentación de GHC 5.04.1 (septiembre de 2002, antes de que fuera un Scala )
  2. Conversiones implícitas. No sé cuál es el primer idioma para tenerlos, pero estaban en C # 1.0 (usando la palabra clave implict ) que precede a la primera versión de Scala en aproximadamente un año.
respondido por el Philip JF 02.06.2012 - 04:59
3

Le hice una pregunta similar en la pila Rebosar. La respuesta más votada y otros sugerir que los orígenes están en Haskell.

    
respondido por el gerferra 01.06.2012 - 15:36

Lea otras preguntas en las etiquetas