À propos du service
TraduitJe développe des programmes en Joy — un langage concaténatif purement fonctionnel où des programmes entiers sont construits à partir de la composition de fonctions, les fonctions passant une seule pile les unes aux autres. Il n'y a pas de variables nommées et pas de tracas de lambda : j'empile de petits combinators en de grands, et l'ensemble du programme se lit comme un flux de données honnête. Si vous avez besoin d'une procédure de pile, d'un ensemble de citations réutilisables, ou d'une réécriture sans point soignée de logique enchevêtrée — je le ferai.
Mon travail s'oriente dans plusieurs directions. D'abord, le développement à partir de zéro : je conçois des vocabulaires de mots, tire des motifs communs dans des combinators comme map et fold, et dans les schémas de récursion pour lesquels Joy est célèbre, en gardant chaque définition courte et testable. Deuxièmement, le refactoring : je prends un script Joy développé et le réécris dans un style sans point discipliné afin que le sens réside dans la composition, et non dans les effets secondaires. Troisièmement, l'idée de "programme comme données" : parce que les citations ne sont que des listes, j'écris des métaprogrammes qui construisent, analysent et réécrivent d'autres programmes, et applique la réécriture de termes pour prouver de petites équivalences et simplifier des expressions.
J'enseigne aussi. Je fais des sessions individuelles et prépare des documents écrits qui amènent un débutant d'une pile vide à la récursion auto-applicable, avec des problèmes allant de simples à véritablement difficiles. Mon expérience en recherche me permet de discuter de l'algèbre du langage, de sa connexion à la logique combinatoire, et de la façon dont le modèle de pile diffère du calcul des lambda.
Ce que vous obtenez : du code source commenté, une suite de tests pour chaque mot, une note de projet courte sur la stratégie de composition, et un appel à réviser et discuter. Derrière moi se trouvent des années de travail avec des langages concaténatifs et fonctionnels et un amour pour le code qui reste petit, prouvable et agréable à lire.
Mon travail s'oriente dans plusieurs directions. D'abord, le développement à partir de zéro : je conçois des vocabulaires de mots, tire des motifs communs dans des combinators comme map et fold, et dans les schémas de récursion pour lesquels Joy est célèbre, en gardant chaque définition courte et testable. Deuxièmement, le refactoring : je prends un script Joy développé et le réécris dans un style sans point discipliné afin que le sens réside dans la composition, et non dans les effets secondaires. Troisièmement, l'idée de "programme comme données" : parce que les citations ne sont que des listes, j'écris des métaprogrammes qui construisent, analysent et réécrivent d'autres programmes, et applique la réécriture de termes pour prouver de petites équivalences et simplifier des expressions.
J'enseigne aussi. Je fais des sessions individuelles et prépare des documents écrits qui amènent un débutant d'une pile vide à la récursion auto-applicable, avec des problèmes allant de simples à véritablement difficiles. Mon expérience en recherche me permet de discuter de l'algèbre du langage, de sa connexion à la logique combinatoire, et de la façon dont le modèle de pile diffère du calcul des lambda.
Ce que vous obtenez : du code source commenté, une suite de tests pour chaque mot, une note de projet courte sur la stratégie de composition, et un appel à réviser et discuter. Derrière moi se trouvent des années de travail avec des langages concaténatifs et fonctionnels et un amour pour le code qui reste petit, prouvable et agréable à lire.