Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I spent a decent amount of time looking at Lamina, and while I liked the concept, the implementation was, imho, a very complex set of macros and dynamically built Java types and interfaces. It did not feel like the "clojure way" and just following the code of a single message send was painful.

Will core.async be similar in it's implementation complexity?



The channels themselves are a bit hard to understand because there's a careful dance of locks/unlocks to get it all to work correctly, but it shouldn't be hard to figure out.

The IOC go macro is huge (about 500/600 loc) but it's pretty straight forward. Its really nothing more than a micro compiler that pareses clojure, does some analysis on it, and spits it back out as clojure. If you've done any work with compilers it should be very easy to understand.


I believe you have the wrong case there. The source [0] is available for your review.

[0] https://github.com/clojure/core.async/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: