Haskell/Yampa 中带有箭头语法的简单 putStrLn
我正在使用 Haskell 和 Yampa FRP 库,该库使用 arrows 语言扩展。
我怎样才能在 SF 中做一个简单的 putStrLn ?
mySF = proc x -> do
y <- identity -< x*x
putStrLn "Hello World!" ++ show y
returnA -< y
箭头语法抱怨表达式不是箭头(当然),但即使使用箭头我也没有输出
output <- identity -< putStrLn "Hello World!"
i'm using Haskell with the Yampa FRP library which uses the arrows language extension.
how can i do a simple putStrLn in a SF?
mySF = proc x -> do
y <- identity -< x*x
putStrLn "Hello World!" ++ show y
returnA -< y
the arrow syntax complains about the expression not bein an arrow (of course), but even with arrows i get no output
output <- identity -< putStrLn "Hello World!"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我只是在尝试完成 FRP 论文时才尝试了一下 Yampa,但据我了解,这根本不是在 Yampa 中使用
IO
的方式。相反,您可以使用reactimate
函数“动画”一个SF a b
,该函数采用b ->; 类型的函数。 IO()
作为它的第二个参数。此函数是诸如putStrLn
之类的内容以及程序执行的任何其他类型渲染的所在。“Yampa Arcade” 论文很好地解释了
reactimate
的工作原理。I've only played around with Yampa a bit while trying to work through the FRP papers, but in my understanding this just isn't at all how you work with
IO
in Yampa. Instead you "animate" anSF a b
with thereactimate
function, which takes a function of typeb -> IO ()
as its second argument. This function is where things like yourputStrLn
would live, along with any other kinds of rendering the program does.The "Animating Signal Functions" section of the "Yampa Arcade" paper gives a good explanation of how
reactimate
works.这是 Yampa 的完整 Hello World 示例。
Here is a full Hello World example for Yampa.