- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想了解 Haskell 中函数式响应式(Reactive)编程的本意,以及它与 FRP 在 Javascript 中的实际应用有何不同。不幸的是,我对 Haskell 的了解很肤浅,不得不坚持使用 Javascript。
这是我尝试实现 Haskell 的 Behavior
无类型语言的数据类型:
// behavior :: String -> DOMHTMLElement -> a -> (a -> Event -> a) -> (a -> b)
const behavior = type => target => x => f => {
const destructiveSet = y => (x = f(x) (y), x), // A
handler = event => destructiveSet(event);
target.addEventListener(type, handler, true);
return g => g(x);
};
A
是必要的,因为我必须改变初始值
x
,由调用堆栈保存。函数体从左到右计算并返回逗号运算符的最后一个操作数的值
,
,即
x
的破坏性更新版本.
target.addEventListener
仅将给定的处理程序订阅到给定的 DOM HTML 元素。
behavior
返回一个允许对
x
进行只读访问的函数.
behavior
类型的值。 .它只能轮询它们以观察时变效应。
Behavior
相媲美? ?
const behavior = type => target => x => f => {
const destructiveSet = y => (x = f(x) (y), x),
handler = event => destructiveSet(event);
target.addEventListener(type, handler, true);
return g => g(x);
};
const comp = f => g => x => f(g(x));
const K = x => y => x;
const I = x => x;
const get = I;
const defer = n => f => x => setTimeout(f, n, x);
const log = prefix => x => console.log(prefix, x);
const inc = x => x + 1;
const counter = behavior("click") (document) (0) (comp(K) (inc));
console.log("click on the section above");
counter(get); // 0
defer(4000) (counter) (log("counted clicks:"));
最佳答案
您对 behavior
的实现更接近 FRP 术语中的事件,即使 FRP 事件和 DOM 事件没有任何共同之处。 FRP 的核心是抽象连续(相对于离散)时间的概念。 Behavior a
表示 a
类型的连续值流;因此,它的含义是从时间到值(value)的函数。
Conal Eliott 是这样定义的:
μ :: Behaviour a -> (Time -> a)
μ :: Event a -> [(Time, a)]
关于javascript - 如何在 Javascript 中实现 Haskell 的 FRP Behavior 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42373923/
我需要实现一个行为: 点击元素时 - 会发生一件事 但是当单击并按住超过一秒时,会发生其他情况(例如元素变得可拖动),然后第一个事件永远不会触发 我想我知道如何捕获点击并按住类型的事件,但如何区分第一
1 frp介绍 注意事项: 1)服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透 2)根据服务器系统选择合适的脚本 脚本主要分为服务端与客户端文件 1.外网服务器端用到的是Frps和Frp
1 frp介绍 注意事项: 1)服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透 2)根据服务器系统选择合适的脚本 脚本主要分为服务端与客户端文件 1.外网服务器端用到的是Frps和Frp
我目前正在阅读 WebSharper 的文档.在 the section about FRP , 它指出: Functional Reactive Programming (FRP) typicall
我目前正在研究我的下一个项目。这是在一个预先规划阶段,所以这个问题只是为了了解现有技术。 设置 我有一个具有多个输入和输出的有向无环图 (DAG),现在考虑人工神经元网络: 处理这种结构的常用方法是在
我可以构建一个PID controller在 Haskell FRP 库中 netwire使用为 Wire 提供的 ArrowLoop 实例中的 loop。 我还可以使用 switch 实现 Cont
我目前正在尝试了解箭头和 FRP,并且遇到了一个问题,我似乎无法将其映射到 FRP,即如何对道路网络进行建模。 我想我可以将道路网络建模为箭头,其中每个箭头代表一个路段。它在地点和时间接受汽车流,并生
我正在 Scala 中实现 FRP 框架,我似乎遇到了问题。出于某种想法,这个问题我决定限制我的框架的公共(public)接口(interface),以便只能在“现在”中评估行为,即: behavio
我一直在使用 Haskell(特别是 Yampa)中的 Arrowized FRP 库,但我不太清楚如何进行“连续”切换。我的意思是信号通过信号函数(下面的 sf),它本身就是一个信号(如图像的上半部
在经典 FRP 的最新实现中,例如 react 香蕉,有事件流和信号,它们是阶跃函数( react 香蕉称它们为行为,但它们仍然是阶跃函数)。我注意到 Elm 只使用信号,并没有区分信号和事件流。此外
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。 7年前关
我必须写一篇关于函数响应式(Reactive)编程 (FRP) 系统优化的论文。 这是我目前找到的引用资料。 使用广义代数数据类型进行函数式响应式(Reactive)编程的动态优化,Henrik Ni
我想在 Haskell 中学习 FRP,但是决定使用哪个库有点困难。许多尝试似乎已经失败,有些似乎又复活了(例如最近在 Yampa 上的事件)。 从我读到的内容来看,FRP 似乎有两种“类型”:一侧是
我必须写一篇关于函数响应式(Reactive)编程 (FRP) 系统优化的论文。 这是我目前找到的引用资料。 使用广义代数数据类型进行函数式响应式(Reactive)编程的动态优化,Henrik Ni
我刚开始使用 Bacon.js这真的很棒。尽管有时我确实很难找到正确的做事方式。例如,我想要一个带有可拖动部分的 Angular Directive(指令)。我不要脸的扒进别人的jsBin并尝试将该代
我正在使用BaconJS创建两个事件流,如下所示: # Wait for start of the module sStart = Bacon.fromCallback module.onStart.
有人说 FRP 是在不显式管理状态的情况下处理事件流。例如这个人: http://www.slideshare.net/borgesleonardo/functional-reactive-progr
我的问题是关于 FRP 中“状态机”对象的可变性。我正在评估Bacon.js's Observable.withStateMachine . 我的领域是交易机器人。我有一个“订单”的源事件流,它实际上
我正在开发一个使用 React 的项目,并且希望实现一种 FRP 形式来处理给定对象以任何给定形式更改时的事件。 我对 Bacon.js 和 RX.js 做了一些研究,但仍然有点不确定如何充分利用这些
今天,我读到了 FRP(函数式响应式(Reactive)编程)。但是,我不知道这在引擎本身中有多少适合。 看完Gerold Meisinger's article ,我的问题是,是否值得使用 FRP
我是一名优秀的程序员,十分优秀!