Hacker News Front Page · Pranav Desai ·
Needed 1+1, Built a Functional Programming Language
Partiendo de un problema de estructuras de datos sobre evaluación de expresiones aritméticas, el autor desarrolló un lenguaje de programación funcional completo en C. El sistema reconoce que todas las operaciones pueden representarse como funciones genéricas aplicadas a expresiones, por lo que implementó un evaluador de grafos, una tabla de entorno para variables y funciones, y un allocator personalizado basado en chunks. Cuando la ejecución de fibonacci(40) consumió 12 GB de memoria al generar 1,3 mil millones de nodos sin liberarlos, implementó un garbage collector mark-and-sweep que redujo el consumo a 1,7 MB, resolviendo el problema de memoria pero creando uno de rendimiento (6 minutos para evaluar) que el autor aborda en partes posteriores.
A deep dive into converting a simple arithmetic expression into a binary tree, leading to a custom language in C.