Size: a a a

Clojure — русскоговорящее сообщество

2020 January 30

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Сергей Суржик
а я не понимаю, почему жс это лисп)
Потому что функции можно передать в другие. :)
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Сергей Суржик
JavaScript's C-like syntax, including curly braces and the clunky for statement, makes it appear to be an ordinary procedural language. This is misleading because JavaScript has more in common with functional languages like Lisp or Scheme than with C or Java. It has arrays instead of lists and objects instead of property lists. Functions are first class. It has closures. You get lambdas without having to balance all those parens.

https://www.crockford.com/javascript/javascript.html
Да, но кложуры у них отбитые какие-то.
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Потому что функции можно передать в другие. :)
а лисп это разве про передачу функций в другие? 🙂
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Alexey Golda
а лисп это разве про передачу функций в другие? 🙂
А про что?
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Вроде было мнение что это про гомоиконность - но в кложе это не так
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
Anton Chikin
А про что?
ну по такой логике выходит, что лиспы это все хоть сколько-нибудь функциональные языки. Java, Scala, Rust, Haskell, Erlang...список можно долго продолжать.
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
которые могут принимать функцию как аргумент
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Anton Chikin
Вроде было мнение что это про гомоиконность - но в кложе это не так
Почему не так?
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Vyacheslav Mikushev
Почему не так?
В кложе реальный AST не соответствует исходному коду
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Anton Chikin
В кложе реальный AST не соответствует исходному коду
можешь поподробнее? или пример кинь
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Kirill Chernyshov
можешь поподробнее? или пример кинь
кложа не представляет код в виде данных. Она компилит код в байткод
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Нельзя взять функцию и что-то внутри у нее поменять, пользуясь тем что на самом деле это данные
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
конечно, ведь данные immutable 😆
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
можно лишь создать новую функцию
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
cljs.user> (= '(+ 1 1) '(+ 1 1))
true
cljs.user> (= #(+ 1 1) #(+ 1 1))
false
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Вот и все
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Код это не данные
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
(defmacro fn= [fn1 fn2]
 (if (= fn1 fn2)
   `true
   `false))

(fn= #(+ 1 1) #(+ 1 1))
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Alexey Golda
а лисп это разве про передачу функций в другие? 🙂
Нет, но в жс это подразумевают.
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
код - это данные на этапе чтения
источник