haskell – Netwire相互依赖的电线
发布时间:2020-12-14 04:56:51 所属栏目:百科 来源:网络整理
导读:为了试用Netwire,我正在使用该库实现Pong.在代码中我有一个球线和一个计算机桨线,由于它们相互依赖某些值,我一直遇到无限循环的问题.一些伪代码解释: ball :: Wire () IO GameInput Ballball = (... define ball ...) . pcPaddlepcPaddle :: Wire () IO Gam
为了试用Netwire,我正在使用该库实现Pong.在代码中我有一个球线和一个计算机桨线,由于它们相互依赖某些值,我一直遇到无限循环的问题.一些伪代码解释:
ball :: Wire () IO GameInput Ball ball = (... define ball ...) . pcPaddle pcPaddle :: Wire () IO GameInput Paddle pcPaddle = (... define pcPaddle ...) . ball 要注意的是他们互相接受投入.我试图通过执行以下操作来缓解此问题: ball :: Wire () IO GameInput Ball ball = ( ... ) . delay ( ... base paddle init ...) . pcPaddle 以及在这两条线路中使用延迟功能的其他变化,但我得到<< loop>>无论运行时错误. 如何初始化其中一根电线以使该系统可以工作? 解决方法
当然,5分钟后,我发现似乎有效的神奇组合.我所做的是改变了电线所接受的输入
ball :: Wire () IO Paddle Ball ball = ... paddle :: Wire () IO Ball Paddle paddle = ... 然后,在创建我的电线网络时,我这样做了: {-# LANGUAGE DoRec #-} {-# LANGUAGE Arrows #-} system = proc g -> do rec b <- delay (... ball initial value ...) . ball -< p p <- paddle -< b returnA -< (b,p) 这确认了它们的依赖性,并在第一次传球时为球拍给出球的虚拟初始值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |