Size: a a a

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

2020 December 30

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
но вообще делать рекурсивные вариадик функции - мне страшно представить, что в голове у этого человека
источник

EZ

Evgeny Zajcev in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
но вообще делать рекурсивные вариадик функции - мне страшно представить, что в голове у этого человека
Идея! у него в голове 💡
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Evgeny Zajcev
Идея! у него в голове 💡
ггг
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Evgeny Zajcev
в итоге нужно учитывать и знать всякие особенности этого recur (это и есть удовлетворение машины), типа классика:
(defn foo [& args]
 (let [[x & more] args]
   (prn x)
   (if more (recur more) nil)))
(foo :a :b :c)
==>
:a
:b
:c

(defn bar [& args]
 (let [[x & more] args]
   (prn x)
   (if more (bar more) nil)))

(bar :a :b :c)
==>
:a
(:b :c)
блин, я теперь кажется даже понял, почему так, и почему это, как ни странно, правильное поведение (by design)
источник

LL

Lämppi Lütti in Emacs — русскоговорящее сообщество
А я не понял
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Evaluates the exprs in order, then, in parallel, rebinds
the bindings of the recursion point to the values of the exprs.
Execution then jumps back to the recursion point, a loop or fn method.
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
> The recur expression must match the arity of the recursion point exactly.
источник

LL

Lämppi Lütti in Emacs — русскоговорящее сообщество
Ну ладно
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
гляди трейсы (что приходит в args) первых двух выполнений recur
(:a :b :c)
(:b :c)



и с функцией
(:a :b :c)
((:b :c))


потому что в первом случае ему надо, чтобы приходил такой же список, как и при первом выполнении, а во втором оно честно берёт собирает rest
источник

LL

Lämppi Lütti in Emacs — русскоговорящее сообщество
Да я это заметил
источник

SS

Sergey Seliverstov in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
1. где ты ещё видел нормальную first-class деструктуризацию?
2. в clojure можно, но нужно хостить на VM с TCO, типа racket-овой итп
1 это пра паттерн матчинг? Можно пример или ссылку что там такого офигенного навернули?
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Sergey Seliverstov
1 это пра паттерн матчинг? Можно пример или ссылку что там такого офигенного навернули?
нет, это про деструктуризацию (можно считать это частным случаем ПМ)
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
там навернули такое, что и при объявлении функций, и в let, и в любой binding форме ты можешь просто по шейпу (или по ключам мапы, или и по тому и другому) сразу забиндить элементы
источник

SS

Sergey Seliverstov in Emacs — русскоговорящее сообщество
Ну да, норм. Но этому сто лет в обед. Окамл/хачкиль. Единственное, что пм по словарям там вроде бы нет. (Ну если не брать вместо словарей списки конечно)
источник

EZ

Evgeny Zajcev in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
там навернули такое, что и при объявлении функций, и в let, и в любой binding форме ты можешь просто по шейпу (или по ключам мапы, или и по тому и другому) сразу забиндить элементы
как в MOP только без conditionaлов
источник

SS

Sergey Seliverstov in Emacs — русскоговорящее сообщество
А что такое МОР?
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Evgeny Zajcev
как в MOP только без conditionaлов
в мультиметодах деструктуризация тоже есть :]
источник

EZ

Evgeny Zajcev in Emacs — русскоговорящее сообщество
Sergey Seliverstov
А что такое МОР?
не надо туда лезть! %)) но для общего развития можно
источник

SS

Sergey Seliverstov in Emacs — русскоговорящее сообщество
Evgeny Zajcev
не надо туда лезть! %)) но для общего развития можно
Ну так?)
источник