This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-06-29
Channels
- # admin-announcements (4)
- # arachne (19)
- # aws-lambda (3)
- # beginners (10)
- # boot (166)
- # capetown (32)
- # carry (160)
- # cider (5)
- # cljs-dev (5)
- # cljs-edn (19)
- # cljsrn (1)
- # clojure (100)
- # clojure-belgium (2)
- # clojure-dev (8)
- # clojure-greece (13)
- # clojure-new-zealand (12)
- # clojure-poland (1)
- # clojure-russia (93)
- # clojure-sanfrancisco (2)
- # clojure-spec (133)
- # clojure-uk (52)
- # clojurescript (129)
- # cursive (32)
- # datomic (13)
- # defnpodcast (5)
- # devcards (6)
- # dirac (4)
- # emacs (12)
- # euroclojure (5)
- # events (2)
- # hoplon (19)
- # immutant (45)
- # keechma (17)
- # lein-figwheel (27)
- # off-topic (9)
- # om (30)
- # onyx (17)
- # other-languages (3)
- # planck (2)
- # proton (11)
- # re-frame (7)
- # reagent (4)
- # ring (8)
- # sim-testing (2)
- # spacemacs (4)
- # testing (2)
- # untangled (162)
- # utah-clojurians (1)
- # yada (80)
Is nested parsing a good way to handle a grammar that's explicitly not context-free except for a select few elements?
@staypufd: yeah, 99% sure it’s actually just a big and not just it presenting things in a confusing way
@staypufd: @norman: I need to work on how the Cursive debugger shows lazy seqs, but that looks like a bug to me.
If I use an appropriately configured java ThreadPool (with a finite blocking queue or sync queue) with a Clojure agent, can I safely expect the send
to block when the queue is full? (its the behaviour I want in order to create backpressure in the system)
@moizsj my incomplete/partial answer: if your app code was Java, then it would be clearly defined in the Java API docs. if Clojure's wrapping code, around that, is written in the "principle of least surprise" way, then, it should carry through the same behavior. my second partial answer is... to test for sure, write some Clojure POC app code that mock forces that situation to happen, and watch if it blocks or not. it's the only way to be sure, if it is not said clearly in the docs. I once had a similar "I'm not 100% sure" situation in a pure Java app, and this strategy helped me uncover and confirm a counter-intuitive leak caused by ThreadGroup back in Java 1.3 days. code > docs
@moizsj: presuming you're just doing all this via interop, then yes. Calling from Clojure doesn't change anything about the behavior.
@alexmiller: I meant to ask, will supplying a custom executor (that has blocking behaviour) to an agent during the send
call give me blocking semantics on the send
?
No for the place that calls send
@alexmiller: there appear to be 2 things in play with an agent's send
behaviour. the executor and the action queue. the latter i dont understand too well
Send just puts a function on the queue and returns so never blocks
@alexmiller: yes i want some kind of throttling ability at the place that calls send
Doesn't exist
You should look at core.async for that
Channels have back pressure on put for fixed size buffers
The pool of threads handling send work is bounded though
The pool of threads handling send-off is unbounded
Yes both parts
The code for this in Clojure is not complicated if you want to read it
gotcha - so i can control action (or fn) execution, and notification. but not queueing of the action.
Right. I'd use core.async for that
Or Java stuff
Or Claypoole
@moizsj: to give you an idea https://github.com/tolitius/lasync
is there a clojure library/wrapper for anything that parses Visio diagrams (vsd files)?
what is the idiomatic way to test database-calling-fns, eg monger
calls?
Seems like integration testing rather than unit testing. But if you really want to, it’ll depend on your test harness; many of them have their own ways of mocking/stubbing.
@akiva: I was wondering if integration testing was best. That makes sense, thanks!
Has anyone ever come across the Can't resolve find-ns
runtime exception when running an uberjar, despite the fact that everything runs smoothly in the REPL and compilation goes fine? The only reference on the webz is https://github.com/ztellman/sleight/issues/8 and that doesn’t really tell me anything, nor does it reflect anything in my code. FWIW, it happens on a defrecord call.
@josh.freckleton, anytime! It’s why I usually erect a façade pattern between my code and any calls to an external resource so I can test my transformations without having to worry about the resource.
ah, here's a related question for my use case:
can I have a short-circuiting let
statement? I'm thinking of writing up an either
monad, but if there's an easier way, cool!
@jr: I want a sequence of bound variables, and any of them can throw an exception. I'm using it in a test, where the entire sequence can depend on past bindings, and needs to all "make it through" in order to pass. I don't think when-let
or some->
could do that, right? Well, maybe when-let
if I include a bunch of them, but I don't want to be that verbose. When-let
can only bind one var, rght?
So the find-ns
issue seems to have been caused by having a namespace require another namespace that was deeper in the namespace “hierarchy"
Hi all, is there a better way to turn :ns/key
into just :key
than (-> :ns/key name keyword)
?
Ok, thanks @alexmiller!