On Tue, Jul 22, 2008 at 5:21 AM, Martin Gregorie <[EMAIL PROTECTED]> wrote: > On Tue, 24 Jun 2008 18:42:15 -0400, John W Kennedy wrote: > >> David Combs wrote: >>> passing >>> *unnamed* functions as args (could Algol 60 also do something like that, >>> via something it maybe termed a "thunk") >> >> No, the "thunks" were necessary at the machine-language level to >> /implement/ ALGOL 60, but they could not be expressed /in/ ALGOL. >> > Are you sure about that? > > The first time I ran across the term "thunking" was when Windows 3 > introduced the Win32S shim and hence the need to switch addressing between > 16 bit and 32 bit modes across call interfaces. That was called "thunking" > by Microsoft and even they would surely admit it was a kludge. > > I used Algol 60 on an Elliott 503 and the ICL 1900 series back when it was > a current language. The term "thunking" did not appear in either compiler > manual nor in any Algol 60 language definition I've seen. A60 could pass > values by name or value and procedures by name. That was it. Call by name > is what is now referred to as reference passing. >
On Tue, Jul 22, 2008 at 5:21 AM, Martin Gregorie <[EMAIL PROTECTED]> wrote: > On Tue, 24 Jun 2008 18:42:15 -0400, John W Kennedy wrote: > >> David Combs wrote: >>> passing >>> *unnamed* functions as args (could Algol 60 also do something like that, >>> via something it maybe termed a "thunk") >> >> No, the "thunks" were necessary at the machine-language level to >> /implement/ ALGOL 60, but they could not be expressed /in/ ALGOL. >> > Are you sure about that? > > The first time I ran across the term "thunking" was when Windows 3 > introduced the Win32S shim and hence the need to switch addressing between > 16 bit and 32 bit modes across call interfaces. That was called "thunking" > by Microsoft and even they would surely admit it was a kludge. > > I used Algol 60 on an Elliott 503 and the ICL 1900 series back when it was > a current language. The term "thunking" did not appear in either compiler > manual nor in any Algol 60 language definition I've seen. A60 could pass > values by name or value and procedures by name. That was it. Call by name > is what is now referred to as reference passing. > Thunk has more than one meaning. The ALGOL 60 usage predates Windows obviously. Also, call-by-name is distinct from call-by-reference. See: http://en.wikipedia.org/wiki/Evaluation_strategy And, for fun with call-by-name: http://en.wikipedia.org/wiki/Jensen%27s_Device http://en.wikipedia.org/wiki/Man_or_boy_test -- http://mail.python.org/mailman/listinfo/python-list