Size: a a a

2020 December 21

DP

Dmitry Plesovskykh in Lisp Forever
вообще, вместо того, чтобы спорить кложа и рекет это лисп или не Ъ-лисп лучше писать код, имхо. как минимум это все семейства лиспов, с очень похожими подходами во многом - репл, метапрограммирование, префиксная нотация, динамическая типизация, опциональные типы, работа в образе, расширяемая семантика итд итп, скобочки в конце концов. то что выглядит как лисп, ходит как лисп и крякает как лисп - это лисп.
источник

DP

Dmitry Plesovskykh in Lisp Forever
Valeriy L
ну вообще-то аргументы привели
а можете дать линк для ознакомления?
источник

IZ

Ilia Zviagin in Lisp Forever
Dmitry Plesovskykh
чисто вкусовщина, "считается" это отсылка к авторитетам, а не к аргументам
Так нет, главное в лиспе — SEXPR в синтаксисе. Он есть — это лисп. Нет — это не лисп. Всё предельно объективно.
источник

DP

Dmitry Plesovskykh in Lisp Forever
а в кложе нет s-exprs или в ракетке?
источник

IZ

Ilia Zviagin in Lisp Forever
Dmitry Plesovskykh
а в кложе нет s-exprs или в ракетке?
(defn run [nvecs nitems nthreads niters]
 (let [vec-refs (vec (map (comp ref vec)
                          (partition nitems (range (* nvecs nitems)))))
       swap #(let [v1 (rand-int nvecs)
                   v2 (rand-int nvecs)
                   i1 (rand-int nitems)
                   i2 (rand-int nitems)]
               (dosync
                (let [temp (nth @(vec-refs v1) i1)]
                  (alter (vec-refs v1) assoc i1 (nth @(vec-refs v2) i2))
                  (alter (vec-refs v2) assoc i2 temp))))
       report #(do
                (prn (map deref vec-refs))
                (println "Distinct:"
                         (count (distinct (apply concat (map deref vec-refs))))))]
   (report)
   (dorun (apply pcalls (repeat nthreads #(dotimes [_ niters] (swap)))))
   (report)))
источник

IZ

Ilia Zviagin in Lisp Forever
пример из википедии. Которая считает, что Clojure — это лисп.
источник

DP

Dmitry Plesovskykh in Lisp Forever
ну так сахара накидали чуток для удобства и что?
источник

IZ

Ilia Zviagin in Lisp Forever
Ну и всё...
источник

DP

Dmitry Plesovskykh in Lisp Forever
классный аргумент
источник

IZ

Ilia Zviagin in Lisp Forever
да не, ну это не особо сильно важно...
источник

DP

Dmitry Plesovskykh in Lisp Forever
так в кложе все эти веселые значки и разные типы скобок можно заменить на обычные смайлики )))) просто получится более многословно
источник

DP

Dmitry Plesovskykh in Lisp Forever
это просто сахар над смайликами и все
источник

IZ

Ilia Zviagin in Lisp Forever
Dmitry Plesovskykh
так в кложе все эти веселые значки и разные типы скобок можно заменить на обычные смайлики )))) просто получится более многословно
ок, тогда я неправ
источник

DP

Dmitry Plesovskykh in Lisp Forever
в ракете квадратные скобки вообще то же самое означают что и круглые
источник

IZ

Ilia Zviagin in Lisp Forever
я не знал
источник

DP

Dmitry Plesovskykh in Lisp Forever
;; the shortcut form for (fn ) is #( )
;; where parameters are referred by their index with the prefix %

;; the equivalent of
user=> ((fn [a b c] (+ a b c)) 2 4 6)
12

;; is
user=> (#(+ %1 %2 %3) 2 4 6)
12
источник

DP

Dmitry Plesovskykh in Lisp Forever
просто сахар короче вот и все, оба примера кода абсолютно валидные и эквивалентные
источник

DP

Dmitry Plesovskykh in Lisp Forever
то же самое с квадратными и другими скобками и чем угодно
источник

DP

Dmitry Plesovskykh in Lisp Forever
можно сказать что это просто кодестайл общепринятый на ридер-макросах (к которым нет особо доступа, хехе)
источник

DP

Dmitry Plesovskykh in Lisp Forever
кложа это лисп в который добавили просто сахарку, убрали доступ к ридер макросам и ограничения накладываемые jvm - tco, рестартов нормальных нет итд, но это очевидный компромисс от использования jvm
источник