Jestem całkiem nowy w Clojure i nie jestem pewien, czy całkowicie rozumiem różnicę między apostrofem a zwrotem akcji w Clojure.Clojure - różnica między "(apostrof) a" (backtick)
(def x 5)
;; Question 1
(+ x x) ;; evaluates to 10
'(+ x x) ;; evaluates to (+ x x)
`(+ x x) ;; evaluates to (clojure.core/+ user/x user/x)
;; Question 2
`(~+ ~x ~x) ;; evaluates to (#<core$_PLUS_ [email protected]> 5 5)
- Popraw mnie jeśli się mylę, ale wydaje mi się, że apostrof zapobiega wszystkie symbole (czyli + i x) od rozstrzygnięcia do ich odpowiednich var'S, natomiast lewy apostrof pozwala symbole rozwiązać do ich var użytkownika (ale nie ocenia wartości w var). Czy to jest dokładne?
- Co dokładnie robi tutaj symbol nieobecności (~)? Czy wartość zmiennej jest różna od jej rzeczywistej wartości (tj. Symbol + dla obiektu funkcji i symbol x dla obiektu liczby)? Jeśli mógłbyś to wyjaśnić w kategoriach faz CZYTELNEGO CZYNNOŚCI Clojure'a, byłoby to również pomocne.
Dobra odpowiedź. Tutaj znajdziesz świetny wpis na blogu: https://blog.8thlight.com/colin-jones/2012/05/22/quoting-without-confusion.html –
Zobacz wszystkie przykłady na żywo z KLIPSE http: //app.klipse.tech/?cljs_in=(ns%20my.ns)%0A%0A%5B%0A%20%20 '(% 2B% 20x% 20x)% 20% 0A% 20% 20% 60 (% 2B% 20x% 20x)% 0A% 20% 20% 60 (~ '% 2B% 20x% 20x)% 0A% 20% 20% 60 (% 2B% 20 ~% 40% 60 (% 2B% 20x% 20x))% 0A% 5D% 0A – viebel