问题标签 [netwire]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Using netwire's periodic vs. at wires
I'm trying to write a framework for real-time interactive graphics in Haskell. I've been trying to get a handle on things by using Netwire 5, but I don't seem to have a good handle on how things "depend" on one another. For example, the following code should produce val for two seconds before switching to (val + 1), and then continuing on indefinitely.
However, this creates some sort of memory leak where my program stalls and just keeps allocating memory until something on my system crashes. Alternatively, this definition
behaves the way that I expect it to: count from val
onwards having the value change every two seconds. Can someone please explain this behavior?
haskell - 这是收集网线输入的明智方式吗?
我想使用类型的线Wire s e m a b
来处理多个输入。预期的语义是
- 如果输入列表
[]
什么都不做并返回一个空列表 - 如果输入列表是使用输入单
a:as
步执行连线,则使用输入a
递归单步执行生成的连线as
,然后将结果收集到列表中
这是明智的做法吗?我的实施是否明智?这里完全忽略了抑制,这看起来很奇怪。在netwire中创建处理“一次多个事件”的电线的正确方法是什么?
haskell - FRP 中的无颠簸传输
我可以使用为s提供的实例在 Haskell FRP 库netwire中构建一个PID 控制器。loop
ArrowLoop
Wire
我还可以使用switch
.
如何实现无扰传输,例如使用此处解释的“跟踪”策略(或任何数量的控制工程文章/书籍)?如果它具有良好的性能,另一种策略可能是可以接受的,但是跟踪方法对我的应用程序很有吸引力,因为它还解决了抗饱和问题。
我很难眯着眼睛看框图,使它看起来像两个(或一个?)loop
应用程序的类型。
haskell - 与 Netwire 一起使用时对 ArrowLoop 的误解
遵循这篇文章中出色答案的引导中出色答案的引导下,我试图获得一个ArrowLoop
不使用箭头符号的工作示例。在我完全理解箭头在引擎盖下的工作原理之前,我对使用箭头表示法感到不舒服。话虽如此,我已经构建了一个基于我对 Arrows 的(有限)理解的小程序应该可以工作。但是,它最终以可怕的<<loop>>
异常终止:
我的直觉告诉我<<loop>>
当您不向循环提供初始值时,通常会出现异常。我没有用包含的行做到这一点fn i 0.0
吗?输出不同意:
有谁知道我做错了什么?
haskell - 从箭头符号转换
我仍在尝试了解箭头符号和 Haskell 中定义的箭头类型类的语义之间的相似之处。特别是,这个问题似乎有一个用箭头符号写的小计数器的非常规范的例子:
有人可以告诉我如何在没有箭头符号的情况下将其转换回 Haskell2010 吗?
haskell - Netwire 5 的基本结构是什么?
我正在尝试进入 Netwire,我已经挖掘找到文档、介绍、教程和诸如此类的东西,但是几乎每个教程和现有代码对于 Netwire 5 来说都是过时的,并且使用 Netwire 4 中不再使用的功能我们。自述文件很有帮助,但并非所有内容都可以编译,而且它仍然几乎没有提供足够的信息来开始使用。
我要求解释或示例只是为了让游戏循环运行并能够响应事件,所以我寻求信息以便最终知道:
- 基本结构(例如在响应式香蕉中,您如何启动使用处理程序、定义行为和对事件做出反应的网络描述)。
- 它最终如何进入
main
。 - 如何处理 IO 事件(如鼠标单击、按键或游戏循环回调),事件如何进入会话等。
还有其他相关的。
我认为从那里我可以运行一些东西,所以我可以通过实验来学习其余的东西(因为第 5 版中的文档和教程的状态非常不存在,我希望很快就会出现一些)。
谢谢!
haskell - netwire:处理相互依赖的电线中的懒惰(?)
我正在尝试使用相互依赖的电线使物体从墙壁上velocity
反弹location
。简单的一维示例如下所示:
如果我运行这个,在第一次反弹速度开始在每一步之间在负值和正值之间翻转之后。
我知道我可以通过向速度线发出信号来“修复”它,根据我反弹的边界来使速度为负或正。有用。但我想了解为什么我会看到这种行为,我知道翻转应该只发生一次,因为我明确地将对象推到边框的另一侧。我怀疑懒惰在这里发挥了作用,也许战略性地放置seq
会使它“按预期”工作。
我想要一个解释,并建议如何在不诉诸“蛮力”解决方案的情况下解决它。
haskell - Build a (Wire s e m a c) from (a -> b -> c) and (Wire s e m a b)
As a simple example I have this.
And I would like to be able to create a wire from Int's to Strings.
I think it should be easy, but I'm having no luck.
haskell - Cloud Haskell 和 Netwire。它们重叠吗?两者都可以有效使用吗?
基本上,我想试验 FRP 和分布式 Haskell。
我想知道是否可以将 Netwire 用于 FRP 和 Cloud Haskell 以允许“电线”分布在不同的“节点”上。
但也许 Cloud Haskell 已经提供了 FRP。或者,也许 Netwire 已经提供分布式电线。
你怎么能做分布式玻璃钢?
haskell - 正确使用网线(五)
我一直想试一试 FRP,昨天我终于硬着头皮试了一下,使用 Netwire 5 开始(这本身就是一个相当随意的选择,但我必须从某个地方开始!)。我已经设法达到“有效的代码”的目的,但我注意到一些模式,我不确定这些模式是否是预期如何使用库的一部分,或者它们是否是我的症状我在某处做错了什么。
我从本教程开始,这足以让我轻松启动和运行——我现在有一个由简单的“递增数字”线控制的旋转立方体:
当按下“Esc”时,应用程序将退出,使用netwire-input-glfw中提供的电线:
它们之间的一个重要区别是spin
从不禁止——它应该总是返回一些值——而一直shouldQuit
禁止;直到实际按下键,在这种情况下我退出应用程序。
让我感到不安的是我最终不得不使用这些电线的方式。现在,它看起来像这样:
这种模式有两点让我感到不舒服。首先,我将Right undefined
两个调用都传递给stepWire
. 我认为(如果我的理解是正确的)该参数用于将事件发送到线路,并且由于我的线路不使用任何事件,这是“安全的”,但感觉很糟糕(编辑也许“事件”是这里的错误词——本教程将其描述为“阻塞值”,但重点仍然存在——我从不打算阻塞,也不打算e
在我的线路中的任何地方使用参数)。我查看了是否有一种版本,stepWire
用于您知道自己从未发生过事件并且即使您确实有事件但看不到事件也不会响应它的情况。e
()
然后Right ()
到处经过,感觉比 稍微脏一点undefined
,但似乎仍然不能完全代表我的意图。
同样,返回值也是一个Either
. 这对shouldQuit
电线来说是完美的,但请注意我必须wt'
在电线的输出上进行模式匹配spin
。我真的不知道这意味着什么,所以我只是return ()
,但我可以想象随着电线数量的增加,这会变得笨拙,而且,它似乎并不代表我的意图——有一根永远不会抑制的电线,我可以依靠它来保持下一个值。
因此,尽管我有可以工作的代码,但我还是有一种不安的感觉,即我以某种方式“做错了”,而且由于 Netwire 5 是相当新的,因此很难找到我可以检查的“惯用”代码示例和看看我是否接近标记。这是该库的用途还是我遗漏了什么?
编辑:我已经设法解决了我提到的第二个问题(Either
结果的模式匹配spin
),方法是将spin
和shouldQuit
合并为一个Wire
:
踩这条线给了我一个更明智的返回值——如果Left
我可以退出,否则我有数据可以使用。它还暗示了比我原来的方法更大程度的可组合性。
不过,我仍然必须将Right undefined
其作为输入传递给这条新电线。诚然,现在只有一个,但我仍然不确定这是否是正确的方法。