clojuredesign-podcast

Discussions around the Functional Design in Clojure podcast - https://clojuredesign.club/
Stefan 2019-10-18T07:12:54.063Z

Hi @neumann, @nate I’m still catching up with the previous episodes, making good progress 😉 Really enjoying it! I was thinking of a few potential topics (if you didn’t cover them already): • Transducers: I’ve read some articles, but most are focused on the ‘mechanics’ of what they are, how they work. I would be interested in real-world use cases where they provide “superpowers” that you otherwise lack. • core.logic: have you ever used it yourself? For what kind of things? Is it “real-world-practical” or more interesting from a more academic point of view? How do you use it? Etc 🙂

👍 3
Stefan 2019-10-20T10:40:55.065800Z

Great @neumann , looking forward to those episodes then 😄

sakalli 2019-10-20T18:10:35.068900Z

+1 for transducers! And might that require a deep dive into the wonders of reduce before that?

Stefan 2019-10-21T06:33:29.069300Z

@sakalli I think you might find the first few episodes, about Tic Tac Toe, a nice intro. I captured the essence over here, maybe it helps you: https://github.com/svdo/coding-dojo-clojure/blob/master/src/tic_tac_toe/game.clj.

sakalli 2019-10-21T06:53:23.069600Z

Ah, thanks @stefan.van.den.oord should relisten to them, can't remember them that well anymore. I think I have a fairly ok handle of reduce myself but meant that I think to understand transducers you might need to understand reducers deeply. In terms of the perhaps couple different things that reducers do, for instance, the reducing function (the function that builds the result) and the job it does (such as addition, conj etc). Unless we are talking about basic usage of built-in transducers which is quite straight forward.

Stefan 2019-10-21T06:54:27.069900Z

Ah yes from what I understand that is absolutely true, a refresher as the start of that episode would probably make sense 😉

neumann 2019-10-21T15:45:19.070300Z

Yeah, there are definitely a few different angles on this. One is the very practical: how can I use transducers in my code? The others get more into the plumbing: How they are different than list processing functions? How they are different than reducing functions? What is the "reducers" framework and why was it obviated by transducers? I'd say I'm always quite bent on the practical, but I'd love to explore the underpinnings a bit. Should be fun! Might make a better series than a noun-tober episode. @nate

👍 1
nate 2019-10-21T17:09:45.070600Z

Oh yeah, maybe Transdu-cember!

neumann 2019-10-21T20:03:48.071Z

@nate And there it is!

jumar 2019-10-18T07:49:24.063100Z

+1 for Transducers. It's something I've been struggling with for a long time. I still don't use them at all for production development although I've been playing with them way many times.

jumar 2019-10-18T07:50:45.063300Z

And perhaps another topic is "deep dive into Core.Async" - and looking hard at its benefits, when it makes sense and when not, why would one even prefer them over more classic approach (Related to Twitter episodes)

neumann 2019-10-18T15:11:13.063600Z

@stefan.van.den.oord Thanks for the topics! We have not covered either of those.

neumann 2019-10-18T15:11:21.063800Z

I've used transducers quite a bit, and we should definitely cover them. I found threading to be straightforward to understand, but I struggled with transducers for a while until it finally clicked.

neumann 2019-10-18T15:13:20.064Z

I haven't used core.logic at all, but it is intriguing. It looks like it has the same goals as prolog, which I did use a fair amount in grad school.

neumann 2019-10-18T15:14:43.064200Z

I find logic programming really interesting. I was using Prolog back when I was also experimenting with Haskell. I ended up sticking with the functional programming road rather than the logic programming road.

neumann 2019-10-18T15:16:10.064400Z

@jumar We should definitely cover core.async too. I don't believe we have! Somehow we made it this far without talking about it, even though @nate and I use it all the time.