I am trying to understand this example from the reference: (prog1 # Parallel background calculation of square numbers (mapcan '((N) (later (cons) (* N N))) (1 2 3 4)) (wait NIL (full @)) )
Could you please explain how it works, because it has many interrelated pieces: cons,mapcan, wait that I thought I understood individually but still I do not understand the example. But it is a very practical example, so I would like to understand it fully. Also, what is the role of prog1. Does it control what is passed to the wait? Another confusing thing is the "@". How does one find which of the previous functions updated the @, and which did not. I know that control functions generally update the @, but still it is difficult to read the above example and decide where the @ is being generated (perhaps only for a newcomer like me). Thanks Srini