(define filter specifies that we are creating a function that takes no arguments.(let ((mywallthreads '()) (mythreads '()) ... declares local variables mywallthreads, mythreads, ... and gives each an empty list as its initial value.(lambda () ...) creates a new function with no name and no arguments (nothing in the parens). This forms a "closure" which captures the local variables defined by the let. So each time you call (filter), a new function will be created, each with its own empty lists.(set! variable value) is an assignment roughly equivalent to variable=value or variable:=value in algol-style languages (including C, C++, and Java).(map function list) calls (function value) for each value in the list. It returns a list of the return values from the function.The do loop would look something like the following in C++.