julia lang - programacion - `where` en definiciones de funciones en julia-0.6
julia lenguaje de programacion (1)
La nueva sintaxis significa lo mismo, pero se puede usar en más circunstancias y puede expresar más construcciones y elimina una serie de ambigüedades conceptuales, especialmente los constructores paramétricos circundantes. La sintaxis antigua quedará obsoleta en 0.6 y parte de la sintaxis antigua se reclamará con un significado diferente en 1.0. Fundamentalmente, el problema con F{T}(args...) es que la parte F{T} es conceptualmente ambigua: el analizador sabe lo que significa, pero a menudo es confuso para los humanos:
En aislamiento
F{T}significa el tipo paramétricoFcon el tipo de parámetroTSeguido de parens, no como parte de una definición de método,
F{T}(args...)significa aplicar el tipoF{T}a los argumentosargs...como una función, generalmente construyendo una instancia del tipoF{T}.Seguido de parens y equals, es decir, como parte de una definición de método como en
F{T}(args...) = expr, significa definir un método paraFcomo una función, con parámetros de tipoTargumentos formalesargs...y definiciónexpr.
En particular, no hay sintaxis para ninguno de estos:
Agregar un método a
F{T}para el valor concreto deTen el alcance actual.Añadiendo un método a
F{T}para cada valor paramétricoT
Esta situación provoca la sintaxis del constructor en Julia 0.5 y antes de ser más confusa e intuitiva de lo necesario. En Julia 1.0, los parámetros y constructores de tipo serán más intuitivos y consistentes, siguiendo estos principios:
- La sintaxis utilizada para definir un método siempre coincide con la sintaxis utilizada para llamarlo.
- La sintaxis de
F{T}siempre se refiere al tipoFcon el parámetroT - Los parámetros de tipo siempre se introducen por las cláusulas
where.
Habrá una explicación más detallada de los cambios cuando se publique 0.6, probablemente en una publicación del blog sobre los aspectos más destacados de la versión 0.6.