À propos du service
TraduitJe suis un développeur Racket et Scheme et je travaille dans ce coin du monde Lisp que les ingénieurs backend ordinaires ne visitent presque jamais : je crée des langages, je n'utilise pas seulement ceux déjà prêts. Quand une tâche retourne obstinément votre code généraliste, la réponse honnête ressemble souvent à ceci : vous avez besoin d'un petit langage spécifique au domaine pour la tâche elle-même. C'est ce que je conçois et mets en œuvre. J'écris des programmes fonctionnels soigneux et bien structurés, des macros hygiéniques, des lecteurs et évaluateurs personnalisés, ainsi que les outils qui transforment une idée brute en un interprète fonctionnel sur lequel vous pouvez raisonner.
Mon travail se décompose généralement en trois formes. La première est les DSL et les systèmes de macros : j'utilise les capacités orientées langage de Racket pour donner à votre équipe une notation pour une tâche spécifique, avec des vérifications de syntaxe, des messages d'erreur clairs et un lecteur qui semble natif, pas ajouté à la va-vite. La deuxième est les interprètes et petits compilateurs : analyseurs, évaluateurs, marcheurs d'arbres et backends de bytecode pour des formats de configuration, moteurs de règles, couches de script et langages expérimentaux. La troisième est les outils éducatifs et de recherche : je me soucie des programmes qui s'expliquent d'eux-mêmes, donc je crée des visualisateurs, des débogueurs étape par étape, des vérificateurs d'exercices et des matériaux interactifs pour ceux qui apprennent la programmation fonctionnelle et le calcul lambda qui la sous-tend.
Puisque j'ai grandi dans la famille Lisp plutôt que dans le travail backend traditionnel ou Clojure, la correction et un noyau minimal sont particulièrement importants pour moi. Je m'appuie sur des contrats, des tests basés sur des propriétés et de petites fonctions composables, documente la grammaire et les invariants afin que la prochaine personne n'ait pas à démonter votre analyseur. Si vous avez un prototype à moitié fonctionnel, une pile de macros que personne n'ose toucher, ou une idée fraîche pour un petit langage — je le ferai passer de l'esquisse à un résultat fiable.
— Langages de domaine et macros hygiéniques en Racket
— Interprètes, évaluateurs et petits compilateurs en Scheme
— Analyseurs, lecteurs personnalisés et moteurs de règles
— Outils éducatifs : débogueurs étape par étape, visualisateurs, vérification d'exercices
— Refactoring fonctionnel, contrats et tests basés sur des propriétés
— Migration et modernisation de vieux codes Scheme et Lisp
Mon travail se décompose généralement en trois formes. La première est les DSL et les systèmes de macros : j'utilise les capacités orientées langage de Racket pour donner à votre équipe une notation pour une tâche spécifique, avec des vérifications de syntaxe, des messages d'erreur clairs et un lecteur qui semble natif, pas ajouté à la va-vite. La deuxième est les interprètes et petits compilateurs : analyseurs, évaluateurs, marcheurs d'arbres et backends de bytecode pour des formats de configuration, moteurs de règles, couches de script et langages expérimentaux. La troisième est les outils éducatifs et de recherche : je me soucie des programmes qui s'expliquent d'eux-mêmes, donc je crée des visualisateurs, des débogueurs étape par étape, des vérificateurs d'exercices et des matériaux interactifs pour ceux qui apprennent la programmation fonctionnelle et le calcul lambda qui la sous-tend.
Puisque j'ai grandi dans la famille Lisp plutôt que dans le travail backend traditionnel ou Clojure, la correction et un noyau minimal sont particulièrement importants pour moi. Je m'appuie sur des contrats, des tests basés sur des propriétés et de petites fonctions composables, documente la grammaire et les invariants afin que la prochaine personne n'ait pas à démonter votre analyseur. Si vous avez un prototype à moitié fonctionnel, une pile de macros que personne n'ose toucher, ou une idée fraîche pour un petit langage — je le ferai passer de l'esquisse à un résultat fiable.
— Langages de domaine et macros hygiéniques en Racket
— Interprètes, évaluateurs et petits compilateurs en Scheme
— Analyseurs, lecteurs personnalisés et moteurs de règles
— Outils éducatifs : débogueurs étape par étape, visualisateurs, vérification d'exercices
— Refactoring fonctionnel, contrats et tests basés sur des propriétés
— Migration et modernisation de vieux codes Scheme et Lisp