Fork me on GitHub
#joker
<
2019-07-31
>
hlship17:07:41

Would adding pmap be going too far? It would require future.

jcburley17:07:34

Hmm, offhand, I think it requires threads to be useful, and Joker's biz logic (versus underlying Go runtime) is single-threaded. So it wouldn't be of much use then...if I'm right?

hlship19:07:48

An example use case; our tool gets information from a server, sending about 20 requests one at a time. There's no reason why we couldn't have a separate thread for each request so they could be in parallel.

hlship19:07:12

So I may be looking for some specific use cases, but not something general purpose as in Clojure for JVM.

borkdude19:07:16

can go channels be used from joker?

hlship19:07:37

Not that I know of; but go channels could easily be part of an implementation.

Candid01:08:11

Joker is currently single threaded. Supporting concurrency and/or parallelism in any form is a pretty big effort. It's also an interesting technical problem, so I might tackle it at some point soon. Any ideas on the implementation are welcome 🙂

Candid01:08:28

the use case Howard presented is really appealing though...

borkdude07:08:09

I made a small interpreter for Clojure which works with GraalVM. It calls directly into Clojure and pmap works over there:

$ bb '(pmap #(-> (csh "curl" "(link: ) ") :out (subs 0 10)) (range 5))'
("<!DOCTYPE " "<!DOCTYPE " "<!DOCTYPE " "<!DOCTYPE " "<!DOCTYPE ")

borkdude07:08:31

so maybe, if you want, you can call this tool as a shell command from joker. It spits out EDN by default, so you can parse that back in

jcburley17:07:34

Hmm, offhand, I think it requires threads to be useful, and Joker's biz logic (versus underlying Go runtime) is single-threaded. So it wouldn't be of much use then...if I'm right?