我将 Haskell 与 Yampa FRP 库一起使用,该库使用
Arrows
语言扩展。
如何在信号函数中执行简单的
putStrLn
?
mySF = proc x -> do
y <- identity -< x*x
putStrLn "Hello World!" ++ show y
returnA -< y
箭头语法抱怨表达式不是箭头(当然),但即使使用箭头我也没有得到输出:
output <- identity -< putStrLn "Hello World!"
我只是在尝试完成 FRP 论文时才使用 Yampa 玩了一下,但根据我的理解,这根本不是你在 Yampa 中使用
IO
的方式。相反,您可以使用 SF a b
函数对 reactimate
进行“动画化”,该函数将 b -> IO ()
类型的函数作为其第二个参数。这个函数是像你的 putStrLn
这样的东西以及程序执行的任何其他类型的渲染的地方。
“Yampa Arcade” 论文的“动画信号函数”部分很好地解释了 reactimate
的工作原理。
{-# 语言箭头 #-} 进口FRP.Yampa main = 重新激活初始化输入输出过程 初始化=返回“Hello World!” 输入 _ = 返回(0.0,无) 输出 _ x = putStrLn x >> 返回 True 过程=身份