问题标签 [frp]

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.

0 投票
2 回答
616 浏览

haskell - 为Haskell Frp包安装windows?

我试图在 Windows 上安装响应式香蕉包,但收效甚微。它似乎知道这些软件包,但安装失败。有什么提示吗?


好的,我安装了所有的 wx-stuff - 采取了几个步骤。wx-config,然后是 wxWidgets,然后安装 Haskell 部件(wx、wxcore、reactive-banana.wx)。但是基本的 Reactive 和 category-extras 仍然像上面那样失败。- 99 个附加类别中的第 39 步失败:


更新:

我发现 Haskell 的 Wx 宇宙有点乱。有很多关于这个的注释和关于windows上wx和wxHaskell问题的描述,在一些建议中需要旧版本的GHC等。代码与当前的MSoft编译器不兼容,所以需要安装其他编译器等等。总而言之在戳了几个小时后,我感到相当失望。我确实安装了 wx-config、wxPack、wxWidgets,然后是 wxHaskell,然后是 cabal wx & wxcore; 所有报告成功 - 仍然失败(未找到 wxmsw28_gcc.dll;虽然它在库中)。他们的初始测试(样本/对照......)失败了。wxWidgets 和 wxHaskell 页面上的所有示例链接以及更多链接都已损坏。重新启动后(?!)它似乎确实运行了一些测试 - 所以我现在希望成功。

我希望有一种神奇的“apt-get install”之类的体验。

对于 FRP——FRP 示例(在 leksah 中)给出了很多:“Link destinations not found for...”错误消息,但到目前为止确实可以运行。

总而言之,根据我的经验,wxHaskell 和 FRP 在 Windows 上似乎不太容易使用。当然,我不会分配给一个班级来尝试作为 Haskell 易用性和实用性的一个很好的例子!:-)

我很欣赏这些软件包中涉及的所有复杂性和工作,我无意抱怨——只是一份经验报告。也许 wxHaskell 包不常用,或者..??

0 投票
4 回答
871 浏览

haskell - Haskell:FRP 反应性 Parsec?

Haskell 中是否有(或可能有)反应式Parsec(或任何其他纯函数式解析器)?

简而言之,我想逐个字符地为解析器提供数据,并获得与我提供的足够多的结果一样多的结果。

或者更简单,我怎么能做到foldr或至少map

我们是否需要它们的不同版本来支持这种反应行为?

编辑

我的问题特别是关于 FRP。我以解析器为例,这是我能想到的最好的方法来澄清我的问题并全面了解我的需求。

我相信 FRP 不仅仅是关于 UI,对吧?

0 投票
1 回答
2456 浏览

haskell - 我使用的是反应香蕉吗?

这是一个使用 reactive-banana 库的 Haskell FRP 程序示例。我才刚刚开始对 Haskell 有所了解,尤其是还没有完全理解 FRP 的含义。我真的很感激对下面的代码的一些批评

这里有一个要点:https ://gist.github.com/1099712 。

我特别欢迎任何关于这是否是 accumE 的“好”使用的评论,(我不清楚这个函数每次都会遍历整个事件流,尽管我猜不是)。

此外,我想知道如何从多个套接字中提取消息 - 目前我在永远的内部有一个事件循环。作为一个具体的例子,我将如何添加第二个套接字(zeromq 用语中的 REQ/REP 对)来查询计数器内 IdMap 的当前状态?

0 投票
1 回答
3362 浏览

programming-languages - 函数响应式编程的“信号”表示是否正确?

我一直在研究 FRP,发现了一堆不同的实现。我见过的一种模型是我将其称为“信号”表示的模型。这一基本要素将事件和行为组合到一个实体中。

首先,信号是一个对象,其值为行为。其次,信号有一个事件“流”,可以作为标准数据结构查看和操作(您可以在信号上使用“每个”、“映射”和“过滤器”等来定义事件的反应方式)。例如,我可以这样做(其中“时间”是时间的信号表示):

FRP 的这种表示是否正确或有任何问题?我非常喜欢它的工作方式以及个人描述的简单程度,但我不确定它是否正确。

0 投票
1 回答
428 浏览

user-interface - FRP在顶层应该如何工作?

我一直在尝试为 Scala 创建功能响应式编程框架。目前我感到困惑的一件事是当前的实现如何处理表示顶层的行为。为了解释我的意思,我举个例子。假设我有一个 JPanel,我想这样做:

虽然这里的颜色是静态的,但我们希望面板背景在 Behavior 的值更新时更新。到目前为止,我所做的方式本质上是使用事件创建离散化的行为(可通过changes行为上的函数访问)。这基本上只是行为发生变化时发生的事件源。使用这里 setBackground 的实现将是:

这感觉有点乱。有人对这是否是一种不好的方法有任何建议吗?我今天一直在看 Elliott 的Push-Pull FRP,感觉我可能会朝着正确的方向前进,但在某个地方迷路了。

编辑:如果没有人有明确的解决方案,那么想法/想法会很棒!

0 投票
2 回答
8194 浏览

c++ - 游戏引擎上的 FRP。这值得么?

今天,我读到了 FRP(函数响应式编程)。但是,我不知道这在引擎本身中有多少适合。

阅读Gerold Meisinger 的文章后,我的问题是,是否值得使用 FRP 而不是基于组件的架构。这是游戏引擎架构设计的近期未来吗?这只是解决基于组件的架构的小问题的简单方法吗?我将不胜感激任何文章,解释,个人意见等。

想想商业游戏的引擎,特别是射击游戏或赛车类型(3D 游戏)。不要考虑 2D 平台游戏或其他更简单(谈论引擎复杂性)的平台游戏。我会使用 C/C++(我注意到使用 FRP 的人依赖于 Haskell,因为它的性质。但是,我看到了这个文档并且更喜欢站在 C++ 上,作为“行业标准”)。

0 投票
1 回答
704 浏览

testing - Haskell:如何使用快速检查测试(反应性)FSM?

我为我目前正在从事的一个小型足球比赛编写了一个有限状态机模块。它提供了一个用于设置 FSM 的接口(基本上是它的状态和转换)。对于每个状态,您可以提供将在进入和退出时触发的函数,或者当 FSM 保持相同状态时,这些函数会返回一些消息。它还提供了一个反应式接口 (Yampa),它产生随时间变化的状态并收集随时间发生的消息。代码在这里Data/FSM.hs

我正在寻找一种测试这个模块的好方法。由于它是纯的,我想尝试一下快速检查。我对快速检查没有经验,所以任何提示都将不胜感激!到目前为止,我的基本理解是:提供一些或多或少随机构建 FSM 的函数,然后在它们上运行一些(或多或少随机)转换。但我不太明白如何以这种方式构建测试......

0 投票
2 回答
479 浏览

haskell - 在 FRP 中应用行为(和其他类型)的位置

我正在使用reactive-banana开发一个程序,我想知道如何使用基本的 FRP 构建块来构建我的类型。

例如,这是我真实程序中的一个简化示例:假设我的系统主要由小部件组成——在我的程序中,是随时间变化的文本片段。

我本可以有

但我也可以

Behavior Widget在我想谈论随时间变化的行为时使用。这似乎让事情变得“更简单”,并且意味着我可以Behavior更直接地使用操作,而不必解包和重新打包小部件来完成它。

另一方面,前者似乎避免了实际定义小部件的代码中的重复,因为几乎所有小部件都随时间而变化,而且我发现自己甚至定义了少数不带的小部件Behavior,因为它让我可以将它们与其他人以更一致的方式。

另一个例子,对于这两种表示,有一个实例是有意义的Monoid(我想在我的程序中有一个),但后者的实现似乎更自然(因为它只是将 list monoid 提升到 newtype )。

(我的实际程序使用Discrete而不是Behavior,但我认为这无关紧要。)

同样,我应该使用Behavior (Coord,Coord)还是(Behavior Coord, Behavior Coord)表示 2D 点?在这种情况下,前者似乎是显而易见的选择;但当它是代表游戏中实体之类的五元素记录时,选择似乎不太明确。

本质上,所有这些问题都归结为:

使用 FRP 时,我应该在哪一层应用Behavior类型?

(同样的问题也适用Event,尽管程度较轻。)

0 投票
0 回答
1352 浏览

c++ - 游戏中的功能反应式编程(FRP)。一些疑惑和想法

这几天我正在对基于组件的实体系统进行一些研究。我使用实体级别的黑板模式和共享该黑板进行通信的组件进行了第一次近似。

在进行这项研究时,我发现了一个名为 Artemis 的实体框架,它遵循用于实体管理的 FRP 结构。这个想法似乎很不错,我正在考虑集成到我的引擎中。但是,我有一些问题需要解决才能完全理解这个“奇怪”的架构:

1)在我的第一个近似中,组件共享数据的方式非常简单,遵循黑板模式。FRP之后应该怎么做?看起来,每个系统都将拥有与组件的所有依赖关系(使组件完全解耦)。我的意思是,如果碰撞系统需要了解物理组件、可移动系统等......碰撞系统将导入所有这些组件并使用它们完成所有需要的工作。这是正确的吗?

2)每个系统是同质的还是异质的组件容器?我猜系统必须与它们持有的组件类型相关,因为系统需要知道组件数据才能在更新期间使用它。这使我想到下一个问题:

3)这种架构不会导致系统/组件过多吗?

4) 事件系统如何适应这种结构?我通常在游戏对象中有插槽/信号,但似乎在 artemis 结构中没有“实体”概念。

抱歉,这个问题很长,并在此先感谢。

0 投票
1 回答
378 浏览

haskell - reactive-banana:触发包含行为最新值的事件

假设我有一个事件触发器,我想在触发时做两件事。首先,我希望它更新一些行为的价值。其次,如果满足其他条件,我希望它使用更新的行为值触发另一个事件send_off。以代码形式表示,假设我有

那么问题来了:我在里面放什么??????以便send_off发送最新的behavior值,我的意思是该值包括刚刚应用于它的触发器的更新。

不幸的是,如果我理解正确,行为的语义是这样的,更新的值不会立即提供给我,所以我在这里唯一的选择本质上是复制工作并重新计算更新的行为值,以便我可以立即使用它在另一种情况下,即填写?????? 有类似的东西

现在,在某种意义上,我可以通过使用 Discrete 而不是 Behavior 立即使行为中的更新信息对我可用,但这实际上等同于给我一个与我的原始事件同时触发的事件使用更新的值,除非我错过了一些东西,否则反应香蕉不会让我只有在其他两个事件同时触发时才能触发事件;也就是说,它提供事件的并集,但不提供交集。

所以我有两个问题。首先,我对这种情况的理解是否正确,特别是我是否正确得出结论,我的上述解决方案是解决它的唯一方法?其次,纯粹出于好奇,开发者有没有关于如何处理事件交叉点的想法或计划?