21 ms·
There are staticly typed and gradually typed lisps. Clojure also has a similar concurrency to go with channels.
by jabradoodle 3y ago
There are staticly typed and gradually typed lisps. Clojure also has a similar concurrency to go with channels.
- Blackthorn 3y agoClojure's core.async channel concurrency is nothing like go's. You need to wrap your concurrent block in a macro so it can code walk to find explicit blocking points. That means these points need to be marked, and can't be in already compiled functions. That's an enormous limitation. Compare to go's which just works, no caveat.
- deleted 3y ago[deleted]
- ravi-delia 3y agoPlus Go is just so nice with the automatic IO handoff. But in a functional language I really don't think it's as big a limitation- still large, but not as bad as it could be. The pattern of writing mostly small, pure functions and then piping them together with channels all at the end is pretty workable.
- dataangel 3y agoCoalton doesn't really work (https://github.com/coalton-lang/coalton/issues/84?s=09 https://github.com/coalton-lang/coalton/issues/84?s=09) and Typed Racket is only typed outside macros (and I don't just mean that macros are hard to type, I mean the imperative code you write to generate code is not type checked). Any others?
- reikonomusha 3y agoI can't speak for dataangel's requirements but Coalton does work, as I discussed here [1]. [1] https://news.ycombinator.com/item?id=35863429 https://news.ycombinator.com/item?id=35863429