¿Por qué el operador de coincidencia inteligente de Perl 5 se considera roto? [cerrado]

15

He visto una serie de comentarios en la web Smart-Match de Perl el operador está roto . Sé que originalmente era parte de Perl 6, luego se implementó en Perl 5.10 a partir de una versión anterior de la especificación, y luego se corrigió en 5.10.1 para que coincidiera con la especificación actual de Perl 6.

¿Se solucionó el problema en 5.10.1+, o existen otros problemas con el operador de coincidencia inteligente que lo hacen problemático en la práctica?

¿Cuáles son los problemas?

¿Existe una versión aún más actualizada (Perl 6, tal vez) que solucione los problemas?

Editar: Para aclarar, no estoy preguntando sobre errores, sino más bien la opinión de que el comportamiento previsto de ~~ es malo.

    
pregunta Sean McMillan 28.11.2011 - 23:25
fuente

2 respuestas

13

La gente a menudo confunde los problemas que surgen con el operador smartmatch con los que surgen con el constructo given/when , como el problema del lexical $_ .

Llegué a la opinión de que si usa el operador smartmatch solo en literales, no se volverá loco. No puedo hacer promesas sobre cualquier otra situación. Tratar de averiguar qué está haciendo $a ~~ $b es suficiente para impulsar a cualquier ser humano decente a correr gritando de locura, y asumir otro lenguaje de programación por completo.

O al menos, esa es la oportunidad que recibí de Larry cuando estaba editando la sección smartmatch de la 4ta edición de Programming Perl .

    
respondido por el tchrist 19.02.2012 - 16:44
fuente
4

El operador de coincidencia inteligente no estaba "roto" , pero tenía muchos errores. Perl v5.12 solucionó eso, y Perl v5.14 lo perfeccionó en mi humilde opinión. Entonces, para responder a su pregunta, Perl v5.12 y versiones posteriores soluciona este problema. Puedes probarlo con versiones posteriores de Perl v5.10, pero sé que funciona mejor en Perl 5.12+.

Editar: para responder a su edición, consulte este blog . Después de leer el artículo, creo que respondió suficientemente a tu pregunta.

    
respondido por el Dynamic 29.11.2011 - 12:29
fuente

Lea otras preguntas en las etiquetas