Ponieważ argumenty funkcji Common Lisp oceniają w kolejności od lewej do prawej, to dlaczego nie wykorzystać zwykłą funkcję:Common Lisp: Dlaczego progn jest specjalną formą?
(defun progn2 (&rest body)
(first (last body)))
zamiast specjalnego formularza?
Czy "defun" nie zawiera już niejawnego 'progn'? Sprawdź makro rozszerzenia 'defun'. – tuscland
Zarówno odpowiedzi @sds, jak i @ RainerJoswig stanowią ważne punkty. Odpowiedź "wartości" w @ sds jest czymś, co możesz złapać raz na jakiś czas, a zachowanie opisane przez @RainerJoswig jest bardzo ważne, szczególnie gdy zaczniesz umieszczać makrowe formularze najwyższego poziomu w swoim źródle; jeśli wytwarzają więcej niż formę, która powinna być traktowana jako najwyższy poziom, potrzebujesz 'progn'. –