我想在Haskell中学习FRP,但要确定要使用的库有点困难.许多似乎是死亡的尝试,有些似乎已经复活(例如最近在Yampa的活动).
根据我的阅读,似乎FRP有两种"种类":一侧是推拉式FRP(如Reactive-banana),另一侧是箭头式FRP(如Yampa).似乎在弗兰和弗里斯时代曾经有过一些"经典的FRP",但我没有发现其中的任何近期活动.
这两个(或三个)FRP真的是根本不同的方法吗?
其中一个是过时的理论而另一个是"未来的东西"?
或者它们是否必须并行发展,以满足不同的目的?
我是否列出了每个类别中最突出的图书馆,还是有其他选择要考虑(Sodium,Netwire等)?
我终于在J. Abrahamson的评论中看到了Evan Czaplicki的讲话.这非常有趣,并帮助我澄清了一些事情.我强烈推荐给发现这个问题的人.
Vim可以让您使用外部程序的输出替换所选文本.我想利用我在Haskell中编写的程序来利用这一点.但它并没有将所选文本作为args.
- show-input.hs
module Main where
import System.Environment
main = do
input <- getArgs
putStr ("Input was: " ++ (show input))
Run Code Online (Sandbox Code Playgroud)
当我从命令行(NixOS GNU/Linux,BASH)运行它时,我得到了预期的行为:
$ ./show-input test
Input was: ["test"]
Run Code Online (Sandbox Code Playgroud)
当我在Vim中选择一些文本并调用时:'<,'>!~/show-input,我得到了这个:
Input was: []
Run Code Online (Sandbox Code Playgroud)
这里有一些奇怪的东西,但我不知道它是来自Vim传递参数的方式还是来自Haskell获取它们的方式.我尝试过使用控制台Vim和图形gVim(8.0.1451),结果相同.
NB:我可以成功使用Vim Bang!与其他外部程序,如grep.它很棒.
因此,对于任何感兴趣的人,只需替换getArgs为getContents,您就可以在字符串中输入所有内容(而不是字符串列表).
module Main where
import System.Environment
main = do
input <- getContents
putStr ("Input was: " ++ (show input))
Run Code Online (Sandbox Code Playgroud)