Acerca del servicio
TraducidoSoy un desarrollador de Racket y Scheme y trabajo en ese rincón del mundo Lisp que los ingenieros de backend ordinarios casi nunca visitan: creo lenguajes, no solo uso los ya hechos. Cuando una tarea convierte obstinadamente tu código de propósito general al revés, la respuesta honesta a menudo suena así: necesitas un pequeño lenguaje específico de dominio para la tarea en sí. Esto es lo que diseño e implemento. Escribo programas funcionales cuidadosos y bien estructurados, macros higiénicas, lectores y evaluadores personalizados, así como las herramientas que convierten una idea en bruto en un intérprete funcional sobre el que puedes razonar.
Mi trabajo generalmente se descompone en tres formas. La primera son los DSLs y sistemas de macros: utilizo las capacidades orientadas a lenguajes de Racket para dar a tu equipo una notación para una tarea específica, con verificaciones de sintaxis, mensajes de error claros y un lector que se siente nativo, no añadido. La segunda son intérpretes y pequeños compiladores: analizadores, evaluadores, caminantes de árboles y backends de bytecode para formatos de configuración, motores de reglas, capas de scripting y lenguajes experimentales. La tercera son herramientas educativas y de investigación: me importan los programas que se explican a sí mismos, así que hago visualizadores, depuradores paso a paso, verificadores de ejercicios y materiales interactivos para aquellos que aprenden programación funcional y el cálculo lambda que la subyace.
Dado que crecí en la familia Lisp en lugar de en el trabajo de backend convencional o Clojure, la corrección y el núcleo mínimo son especialmente importantes para mí. Confío en contratos, pruebas basadas en propiedades y pequeñas funciones componibles, documento gramática e invariantes para que la próxima persona no tenga que desarmar tu analizador. Si tienes un prototipo medio funcional, un montón de macros que nadie se atreve a tocar, o una idea fresca para un pequeño lenguaje, lo llevaré de un boceto a un resultado confiable.
— Lenguajes de dominio y macros higiénicas en Racket
— Intérpretes, evaluadores y pequeños compiladores en Scheme
— Analizadores, lectores personalizados y motores de reglas
— Herramientas educativas: depuradores paso a paso, visualizadores, verificación de ejercicios
— Refactorización funcional, contratos y pruebas basadas en propiedades
— Migración y modernización de código antiguo de Scheme y Lisp
Mi trabajo generalmente se descompone en tres formas. La primera son los DSLs y sistemas de macros: utilizo las capacidades orientadas a lenguajes de Racket para dar a tu equipo una notación para una tarea específica, con verificaciones de sintaxis, mensajes de error claros y un lector que se siente nativo, no añadido. La segunda son intérpretes y pequeños compiladores: analizadores, evaluadores, caminantes de árboles y backends de bytecode para formatos de configuración, motores de reglas, capas de scripting y lenguajes experimentales. La tercera son herramientas educativas y de investigación: me importan los programas que se explican a sí mismos, así que hago visualizadores, depuradores paso a paso, verificadores de ejercicios y materiales interactivos para aquellos que aprenden programación funcional y el cálculo lambda que la subyace.
Dado que crecí en la familia Lisp en lugar de en el trabajo de backend convencional o Clojure, la corrección y el núcleo mínimo son especialmente importantes para mí. Confío en contratos, pruebas basadas en propiedades y pequeñas funciones componibles, documento gramática e invariantes para que la próxima persona no tenga que desarmar tu analizador. Si tienes un prototipo medio funcional, un montón de macros que nadie se atreve a tocar, o una idea fresca para un pequeño lenguaje, lo llevaré de un boceto a un resultado confiable.
— Lenguajes de dominio y macros higiénicas en Racket
— Intérpretes, evaluadores y pequeños compiladores en Scheme
— Analizadores, lectores personalizados y motores de reglas
— Herramientas educativas: depuradores paso a paso, visualizadores, verificación de ejercicios
— Refactorización funcional, contratos y pruebas basadas en propiedades
— Migración y modernización de código antiguo de Scheme y Lisp