▲ | sevensor a day ago | ||||||||||||||||||||||||||||||||||
I thought this was a good read, and it’s clearly a problem in an OO language, but I struggled to see how it’s an actual problem in a functional language. Maybe I need to go read that paper he referenced by the Racket guys. | |||||||||||||||||||||||||||||||||||
▲ | kragen a day ago | parent | next [-] | ||||||||||||||||||||||||||||||||||
In my example above, to add a new variant type to bicexpr, you need to edit roughly every function that pattern-matches on bicexprs, which is a good fraction of the Bicicleta interpreter codebase. | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
▲ | naasking a day ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||
The example in the article was very clear I thought: try to extend an interpreter with a new primitive (function call in the article) without changing the original interpreter's source code. I'm an FP language, you can't extend the core AST without changing the source code for eval. |