Этот макрос просто позволяет последовательно выполнить несколько функций (то что вобщем-то делает в AS3 запятая). В Лиспе он часто нужен там, где нужно передать функцию, а нужно выполнить несколько функций, например в (if condition iftrue iffalse), вот iftrue / iffalse ожидают функцию, т.е. было бы: (if condition (progn (f1) (f2) ... (fN)) (progn (f1) (f2) ... (fN))). Ну а прикол в том, что синтаксис сохранен почти один в один (жаль, запятые в списках никак не побороть

).
А вообще, у меня есть мысль написать интерпретатор Лиспа для Флеша. Ну это так, мЯчты пока что, но задел какой-то уже есть... только времени совсем нету...