linia Richa na ten był następujący
„Ponieważ mówiliśmy o składni , spójrzmy na klasyczne Lisp . Wygląda na to, że jest to najprostsza ze składni, wszystko to jest lista symboli, liczb i kilku innych rzeczy w formie nawiasów, co może być prostsze? w rzeczywistości nie jest to najprostszy, ponieważ do osiągnięcia tej jednorodności, aby trzeba było przeciążać znaczeniem list o wartości . Mogą to być wywołania funkcji, grupowanie konstruktów lub literałów danych itd. Określanie, które wymaga użycia kontekstu, zwiększając obciążenie poznawcze podczas skanowania kodu do , ocenia jego znaczenie. Clojure dodaje kilka bardziej złożonych literałów danych do list i używa ich do składni. Oznacza to, że listy są prawie zawsze rzeczami podobnymi do wywołań, a wektory są używane do grupowania, , a mapy mają własne literały. Przejście z jednej struktury danych do trzy zmniejsza obciążenie poznawcze znacznie.”
Jedną z rzeczy, które jego zdaniem został przeciążony w standardowej składni był czas dostępu. Tak więc wektor składni w argumentach jest związane z czasem stały dostęp Gdy Powiedział:
Wydaje się dziwne, ponieważ jest ważne tylko dla tej jednej postaci ... jak tylko zostanie zapisane w zmiennej lub przekazane w jakikolwiek sposób, informacja jest "utracona". ..
(defn test [a]
(nth a 0)) ;;<- what is the access time of and element of a?
Osobiście preferuję ostre s yntax zmienia się jak nawiasy, które mają być zarezerwowane, gdy programista musi przełączać modele mentalne, np. dla języków wbudowanych.
;; Example showing a possible syntax for an embedded prolog.
{size [],0}
{size([H|T],N) :- size(T,N1), N is N1+1}
(size '(1 2 3 4) 'n) ;; here we are back to lisp code
Taka koncepcja jest syntaktycznie stała. W środowisku wykonawczym nie "przechodzisz" do struktury. Przed uruchomieniem (czas odczytu/makra/kompilacji) jest inna sprawa, więc w miarę możliwości często lepiej jest utrzymywać rzeczy w postaci list.
[edit]
Oryginalny źródło wydaje się już, ale tu jest inny zapis wywiadu: https://gist.github.com/rduplain/c474a80d173e6ae78980b91bc92f43d1#file-code-quarterly-rich-hickey-2011-md
Opcja 'składnia LET' nie jest specyficzną cechą Common Lisp. Zasadniczo każdy Lisp (Emacs Lisp, ISLisp, Scheme, ...) obsługuje tę składnię. Clojure nie. –
Clojure 'let' wiąże sekwencyjnie. Zatem jest to odpowiednik CL i Scheme 'let *'. – Sylwester