我最近一直在对反应式编程进行一些研究,我发现很难找到Reactive和Functional -Reactive 之间差异的良好描述.
是否只是使用功能方法/范例实现反应式编程而不是使用声明式或OO范式?
paradigms programming-languages functional-programming reactive-programming
我正在寻找在某些时候创建功能性反应框架的麻烦.我已经阅读了很多关于它的内容,并看了几个例子,但我想清楚地知道这个框架必须做什么才能被认为是FRP扩展/ dsl.我并不真正关心实现问题或具体细节等,而是关注在完美世界情况下需要什么.
理想的功能反应式编程语言的关键操作和质量是什么?
我正在使用Rails和Paperclip制作一个小文件上传应用程序.我希望能够在完成上传文件的服务器上返回文件路径,但我似乎无法弄清楚如何获取路径?Paperclip似乎只记录文件本身的名称.
现在有人怎么做?
当我开始实施FRP时,我发现一件令人困惑的事情是如何处理过去?基本上,我的理解是我可以在任何时候使用行为来做到这一点:
beh.at(x) // where time x < now
Run Code Online (Sandbox Code Playgroud)
在这样的情况下,这似乎可能是性能问题:
val beh = Stepper(0, event) // stepwise behaviour
Run Code Online (Sandbox Code Playgroud)
在这里我们可以看到,为了评估过去的行为,我们需要保留所有事件,并且每次采样时我们最终都会执行(最坏的情况下)线性扫描.
我们是否希望此功能可用,或者是否只允许在一次> =现在评估行为?我们甚至想把这个at
函数暴露给程序员吗?
haskell programming-languages functional-programming frp semantics
我正在使用Rails制作一个小文件上传应用程序.对于文件附件我使用精彩的Paperclip,但我无法弄清楚如何进行下载.
如何在我的节目视图中创建一个链接,即传递文件ID,例如允许用户在我的服务器上下载文件?
我一直在研究FRP,发现了一堆不同的实现.我见过的一个模型是我将其称为"信号"表示的模型.这一基本要素将事件和行为结合到一个实体中.
首先,Signal是一个值为行为的对象.其次,信号有一个事件'流',可以作为标准数据结构查看和操作(您可以在信号上使用'each','map'和'filter'等来定义事件如何反应).例如,我可以这样做(其中'时间'是时间的信号表示):
time.each { t => print(t) } // every time there is a 'tick' the current time is printed
a = time * 5 //where 'a' would be a dynamic value always up to date with time
Run Code Online (Sandbox Code Playgroud)
FRP的这种表示是正确的还是有问题?我非常喜欢它的工作方式以及个人描述的简单方法,但我不确定它的正确性.
programming-languages functional-programming frp reactive-programming
每当我读到关于使用synchronized
Scala的作者通常提的是演员,而应使用(此举例).虽然我大致了解演员是如何工作的,但我真的很想看到Actors的一个例子用于替换Java的synchronized
方法修饰符(我的意思是它的Scala等价物 - synchronized
块)在一段代码中.例如,修改数据结构的内部结构会很高兴.
这是演员的好用还是被误导了?
我一直在尝试为Scala创建功能反应式编程框架.目前我很困惑的一件事是当前的实现如何处理在顶层表示行为.为了解释我的意思,我将举一个例子.说我有一个JPanel,我想这样做:
JPanel panel = new Panel()
panel.setBackground(new Behaviour(time => Color.red))
Run Code Online (Sandbox Code Playgroud)
虽然这里的颜色是静态的,但我们希望在行为更新值时更新面板背景.到目前为止,我完成它的方法是使用事件(通过changes
行为上的函数可访问)基本上创建一个离散化的行为.这基本上只是行为发生变化时发生的事件源.使用这个setBackground的实现在这里:
def setBackground(color : Behaviour[Color]) {
super.setBackground(color.now)
color.changes.each(change => super.setBackground(change))
}
Run Code Online (Sandbox Code Playgroud)
这感觉有点乱.有没有人有任何关于这是否是一个坏方法的建议?我今天一直在关注Elliott的Push-Pull FRP,感觉我可能会朝着正确的方向前进但却迷失在某个地方.
编辑:如果没有人有明确的明确解决方案,那么想法/想法会很棒!
user-interface programming-languages functional-programming scala frp
我试图在使用Rails在Heroku上运行Unicorn时允许大量上传,但我意识到任何大型上传可能需要比Unicorn工作者的超时时间更长的时间.这意味着(我已经看到这种情况发生),Unicorn主进程将终止上传大文件的工作程序,并且请求将超时(503错误).
如果没有删除或大规模增加我的服务器的超时,有没有办法允许上传工作程序在上传完成时挂起?或者,我是否完全误解了,并且最有可能导致我的上传超时的其他内容?
我已经开始乱用我正在研究的编译器项目的ASM API.但是,我发现文档对很多地方的新手来说并不清楚,我认为有一个很好的例子,可以生成一个只打印"Hello,World!"的类.这将是一个很好的例子.
目前,我可以使用main()(使用ClassWriter,ClassVisitor和MethodVisitor类)生成一个类,但我似乎无法弄清楚如何生成main的主体.任何人都可以给我一个在ASM中生成类文件的示例: