4 ms·
I agree with you it'd be useful to see how you might implement lambdas in a language like C. But after that first example, implementing other more complicated l
by habitue 11y ago
I agree with you it'd be useful to see how you might implement lambdas in a language like C. But after that first example, implementing other more complicated language constructs in C, instead of learning ML/haskell is going to be more time fighting C, and less time learning anything new. The lack of side-effects and equational reasoning in functional languages let you get a lot of details out of your way.
That being said, this is if you're interested in the theory. If you're interested in building compilers, this list won't help too much.
- NotableAlamode 11y agoThe lack of side-effects and equational reasoning in functional languages let you get a lot of details out of your way. Actually ... You (kind-of/sort-of) need side effects when implementing a language with higher-order functions. You at least need it for generating fresh variables to avoid free name capture. Yes, I know you can do this with a monad, but this is not going to help a beginner. It's much easier to maintain a global counter that you increment every time you want a fresh variable name.
- habitue 11y agoThe way I did it was just recursively pass down an accumulator argument to generate De Bruijn index-like variable names, rather than keeping a global counter Point taken though that it's a bit simpler with global state