gpt4 book ai didi

haskell - Netwire 相互依赖的电线

转载 作者:行者123 更新时间:2023-12-02 16:33:12 25 4
gpt4 key购买 nike

为了尝试 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

以及使用 delay 的其他变体在这两根电线中起作用,但我得到 <<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)

这确认了它们的依赖性,并为 Racket 提供了第一次传球时的虚拟初始值。

关于haskell - Netwire 相互依赖的电线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18524079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com