Aby uzyskać odpowiedzi na pytania 1. i 2., zobacz komentarz d.j.sheldrick dotyczący pytania. Odpowiedź na 3 .:
Po pierwsze, chociaż nie ma tu znaczenia, nazwane funkcje mogą odnosić się do nich według ich nazwy. To pozwala im zwracać się jako wartości lub wywoływać się za pomocą zwykłego mechanizmu wywoływania, a nie na szczycie. Co ważne, jest to poprawna strategia auto-call dla funkcji generujących leniwe seqs; Poszedłem do powodów, dla których in an earlier SO answer (zobacz część po "Jak można zawijać wywołania rekursywne w leniwej sekwencji ...").
Po drugie, funkcje są kompilowane do klas JVM. Klasy są nazywane przez kompilator Clojure w oparciu o przestrzeń nazw, w której funkcja jest zdefiniowana, jeśli funkcja jest nienazwana; w przeciwnym razie nazwa jest używana do generowania bardziej znaczącej nazwy dla klasy. Jest to przydatne do debugowania, ponieważ sprawia, że ślady stosu stają się bardziej zrozumiałe.
1. Odpowiedź została udzielona tutaj: http://stackoverflow.com/questions/7552632/what-does-static-do-in-clojure –