1 puntos por GN⁺ 2024-11-14 | 1 comentarios | Compartir por WhatsApp
  • Cinco funciones inusuales de Raku

    • Raku es como un laboratorio para experimentar con distintas características del lenguaje. Ofrece varios modelos de concurrencia y diversas funciones, y la forma en que cada una interactúa entre sí es única.
  • Junctions

    • Los junctions representan una superposición de valores posibles y se usan para expresar fórmulas lógicas.
    • Aplican operaciones a todos los valores y se utilizan convirtiéndolos a boolean.
    • Raku expresa cuantificadores de forma elegante mediante junctions.
  • Whatevers

    • * es el símbolo "whatever" y cumple varios roles.
    • En rangos o secuencias significa "unbound" y se transforma en una función anónima.
    • Es útil porque varios métodos de Raku están sobrecargados para aceptar funciones.
  • Expresiones regulares

    • Raku ofrece una sintaxis nueva, distinta de las expresiones regulares tradicionales compatibles con POSIX y Perl.
    • Las expresiones regulares se pueden combinar y dividir en partes más simples y legibles.
    • Admite gramáticas de análisis sintáctico como una función integrada del lenguaje.
  • Hyperoperators

    • l>>.method es básicamente similar a map y desciende recursivamente incluso a las sublistas.
    • Los operadores hiper binarios aplican operaciones elemento por elemento sobre dos listas.
    • Son útiles para ejecutar la misma fórmula sobre múltiples entradas.
  • Sintaxis de pares

    • Los hashes de Raku están compuestos por pares key => value, y mediante la "sintaxis de dos puntos" se pueden especificar pares de forma concisa.
    • :key y :!key se mapean respectivamente a key => True y key => False.
    • Esto permite configuraciones de métodos muy concisas.
  • El laboratorio de próxima generación: Slangs y RakuAST

    • Slangs es una función que modifica la sintaxis de Raku y permite, por ejemplo, cambiar la sintaxis de los bucles o alterar identificadores.
    • RakuAST permite parsear todas las expresiones de Raku como AST desde dentro de Raku.
  • Experimento adicional

    • Raku ofrece un conjunto preinstalado de módulos de terceros mediante la instalación de "Rakudo Star".
    • Es una excelente solución intermedia entre la carga de mantener una gran biblioteca estándar y la carga para el usuario de encontrar el paquete adecuado.
  • Blogs recomendados

    • Los blogs de Elizabeth Mattijsen y Codesections ofrecen mucha información sobre el interior de Raku.
    • El Raku Advent Calendar es un excelente recurso sobre técnicas avanzadas de Raku.

1 comentarios

 
GN⁺ 2024-11-14
Comentarios en Hacker News
  • Se presenta una función de expresiones regulares componibles implementada de forma independiente en JavaScript, una biblioteca usada con frecuencia en varios proyectos. Esta función da una sensación un poco más cercana a usar parsers de primera clase dentro del lenguaje. Como ejemplo, se comparte un caso de implementación de parseo de tipos MIME

    • templated-regular-expression está disponible en npm y GitHub
    • Los lenguajes de programación deberían tener parsers reales, y no se deberían usar expresiones regulares como parser. Pero si se usan expresiones regulares, es mejor dividirlas en fragmentos pequeños
  • Hay quien opina que preferiría dejar la industria antes que dar mantenimiento a una base de código en Raku

  • El problema de velocidad de Raku sigue sin resolverse, y la versión más reciente de Raku tarda 6.5 veces más que Python 3.13 en parsear archivos de registro

  • Las funciones principales de Raku son el CLI y las gramáticas

    • El CLI es una función común, y al estar integrado en Raku resulta cómodo de usar
    • Es raro que las gramáticas sean tratadas como “ciudadanos de primera clase” en un lenguaje de programación, y Raku ofrece la capacidad de generar gramáticas usando programación orientada a objetos
  • Hyper parece una versión más ad hoc de los recursion schemes, y es similar a _ en Scala. Le encanta Scala por las lambdas y piensa que todos los lenguajes deberían adoptar algo parecido

  • Se plantea la duda de por qué (2, 30, 4, 50).map(* + *) devuelve (32, 45) y si no debería devolver (32, 54). Esto podría deberse a diferencias en la forma de expresar números en algunos países

  • Hay una opinión sobre si Perl ahora está sirviendo como puerta de entrada a los lenguajes de la familia APL

  • Expresa sorpresa de que (2,4,8...*)[17] devuelva 262144

  • Usa Raku en entornos reales y cree que es el mejor lenguaje para procesamiento de texto. Construir parsers es muy bueno, y le sorprende que no sea el lenguaje óptimo para crear pipelines de texto con LLM

  • Ha seguido este proyecto durante mucho tiempo; le parece interesante, pero lamenta que Perl 6 se haya visto muy obstaculizado por este proyecto