Hacker News new | past | comments | ask | show | jobs | submit login

A thunk is a piece of glue machine code that adjusts some pointer (which is imagined to make a "thunk" sound) and then calls the real code.



It's a delayed evaluation, as I understand it?


That's the way I tend to read it. The fun bit then is applying context at eval time.

Rebol allows you to use a block as a list/function/thunk, which is lazily evaluated. This changes the scoping in that you BIND a context to this thunk.

It's a different take on process migration in that the context can be serialised with the thunk, or a new context applied at the process site. This is in contrast to lexically scoped lambda functions which then need to account for dynamic (free) variables somehow.


There is a usage of thunk in the context of implementing a compilation strategy for call-by-name arguments.

The usage survives into modern times, whereby lambda arguments are sometimes called thunks.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: