扩展clojure core.async的功能

扩展clojure core.async的功能,clojure,core.async,Clojure,Core.async,是否建议使用我自己的异步函数扩展core.async的功能 通道的异步由put和采取行动接受回调,但协议嵌套在命名空间中。impl的意思是不出去!在这种情况下,还是可以实施它们 例如,我可以将netty通道或java套接字包装为ReadPort和WritePort。核心.async协议的目的是作为实现挂钩,用于实现您自己的缓冲区、通道、端口等。它们存在于impl下,因为它们是实现的一部分,而不是公共用户API 团队认为,在库的非alpha版本发布之前,它们是可以更改的(我对此没有时间表)。从as

是否建议使用我自己的异步函数扩展core.async的功能

通道的异步由
put
采取行动
接受回调,但协议嵌套在命名空间中。impl的意思是不出去!在这种情况下,还是可以实施它们


例如,我可以将netty通道或java套接字包装为ReadPort和WritePort。

核心.async
协议的目的是作为实现挂钩,用于实现您自己的缓冲区、通道、端口等。它们存在于impl下,因为它们是实现的一部分,而不是公共用户API

团队认为,在库的非alpha版本发布之前,它们是可以更改的(我对此没有时间表)。从async的发布到现在,协议都没有改变,但是在这一刻,特别是在
put
采取行动

如果您现在愿意处理捕获更改的问题,请随意实施


Tim B花了相当多的时间研究如何将异步通道连接到网络,在保留通道语义的同时,这是一项非常具有挑战性的工作。目前推荐的模式是使用专用线程与网络I/O通信,并“在边缘”与应用程序中的通道通信(可能使用
put!
take!
)。这种模式不需要实现内部协议。

好吧,这里曾经有一个答案,基本上是说“去做吧!”这似乎已经被收回了。我想说做你想做的@但是,如果协议是隐藏的,那么在没有通知的情况下更改协议的可能性更大。那真是一个难题。我删除了我的答案,因为我误解了这个问题。我以为你是在问是否使用,而不是实施放!拿着!很好。但我不知道是否允许你自己实施。