[Openmcl-devel] process-run-function and "dynamic vs lexical"

John McAleely john at mcaleely.com
Thu Oct 22 11:20:42 PDT 2009

> let creates new variable binding for the names x and y and these
> bindings are lexical unless they are declared special.

OK. I think this is where the mistake in your reasoning occurs, since  
you appeal only to the CL spec.

My understanding is that the closure you create will bind x and y in  
the thread it executes in.

When you jump into another thread via process-run-function, the  
lexical binding created by your let is no longer visible.

My further understanding is that the CL spec does not define this  
multi-threaded behaviour, and that implementation conventions in this  
area tend to appeal back to implementations on the Lisp Machine that  
proved convenient.

So your attempt to understand the behaviour of process-run-function  
only by appeal to the CL spec is where you have made the mistake in  
your reasoning.


More information about the Openmcl-devel mailing list