This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-07-27
Channels
- # admin-announcements (1)
- # aws-lambda (2)
- # beginners (48)
- # boot (231)
- # capetown (1)
- # cider (35)
- # cljs-dev (25)
- # cljsrn (74)
- # clojure (273)
- # clojure-austin (2)
- # clojure-berlin (5)
- # clojure-hk (1)
- # clojure-poland (1)
- # clojure-russia (50)
- # clojure-spec (63)
- # clojure-uk (58)
- # clojurescript (51)
- # cursive (5)
- # datomic (39)
- # defnpodcast (3)
- # dirac (13)
- # editors (6)
- # emacs (3)
- # hoplon (86)
- # jobs (2)
- # lein-figwheel (1)
- # liberator (3)
- # off-topic (10)
- # om (113)
- # onyx (34)
- # protorepl (29)
- # re-frame (2)
- # reagent (8)
- # remote-jobs (1)
- # ring (4)
- # test-check (42)
- # untangled (31)
- # yada (2)
про higher order functions
-- имплементирую comp
Нужно чтобы
(is (= ((COMP list +) 2 2) (list (+ 2 2))))
Написал (defn COMP [f & rest]
(if (nil? rest)
f
(apply f (COMP rest))))
Ага. нифига не работает конечно. Подглядел как у других и в тч реализацию оригинала -- конечно там сложнее. А мой код тада что делает?в оригинале через хитрый редьюс
а тут рекурсия
@comerc: keyword так себя ведут по умолчанию с nil
(let [a {}] (-> a :b :c (or "sorry")))
“sorry”
some->
няшный тоже
я тут такое вчера нашел!
cljs.user=> (print "yo")
yo
nil
cljs.user=> (def s (with-out-str (print "yo")))
#'cljs.user/s
cljs.user=> s
"yo"
я тоже это находил, тока не помню чтоб было нужно 🙂
@seryh: (let [a {:c 3}] (-> a :b :c (or "sorry")))
- тут все правильно, так и должно быть
user=> (let [{{c :c} :b} {}] (or c "sorry"))
"sorry"
user=> (let [{{c :c} :b} {:b {:c 3}}] (or c "sorry"))
3
@kronos_vano: рекурсия, но не композит функции почуму-то...
композиция - последовательное применение функции к результату предыдущей, да? ну я это и делаю.. кажется
подозрение на то, что надо писать макрос, если рекурсией. но вот в оригинале без макроса
Парни, уже весь мозг сломал как сделать, может кто сталкивался. Хочу сделать в консольной утилите репл, собственно по простой и непринужденной конструкции
(print (eval (read-string (read-line))))
проблема в том что нужно в скоуп eval-a забиндить переменную одну, допустим это x
. Вообще никак не получается. пробовал даже сделать ее (def ^:dynamic x nil)
и потом через binding
связать, не выходит. Постоянно пишет Unable to resolve symbol: x in this context
@savelichalex: думаю ты ищешь вот это https://github.com/GeorgeJahad/debug-repl/blob/master/src/alex_and_georges/debug_repl.clj#L68
я то же самое сделал в https://github.com/razum2um/clj-debugger
@razum2um: хм, все дело в *locals*
?
*locals*
просто перечислит локальные переменные. фишка в том, что внутрь эвала нельзя прокинуть чтото типа объекта context (aka binding в рубях), приходится формировать обертку
блин как будто эти переменные с ноги засовывают) спасиб @razum2um
срочно в номер http://blog.cognitect.com/blog/2016/7/26/clojure-spec-screencast-testing
ничо так, но я все равно не понимаю - во время разработки в репле подразумевается что я запущу clojure.spec/instrument
в начале сессии для всех функций или по отдельности буду включать? или вообще тока в тестах?