Haskell/Yampa中带有箭头语法的简单putStrLn

Haskell/Yampa中带有箭头语法的简单putStrLn,haskell,arrows,frp,Haskell,Arrows,Frp,我将Haskell与Yampa FRP库一起使用,该库使用arrows语言扩展 如何在SF中进行简单的计算 mySF = proc x -> do y <- identity -< x*x putStrLn "Hello World!" ++ show y returnA -< y mySF=proc x->do y我只是在尝试阅读FRP文件时与Yampa玩了一会儿,但据我所知,这根本不是您在Yampa中使用IO的方式。相反,您可以使用react

我将Haskell与Yampa FRP库一起使用,该库使用arrows语言扩展

如何在SF中进行简单的计算

mySF = proc x -> do
    y <- identity -< x*x
    putStrLn "Hello World!" ++ show y
    returnA -< y
mySF=proc x->do

y我只是在尝试阅读FRP文件时与Yampa玩了一会儿,但据我所知,这根本不是您在Yampa中使用
IO
的方式。相反,您可以使用
reactimate
函数“动画化”一个
sfab
,该函数将
b->IO()
类型的函数作为其第二个参数。这个函数是
putStrLn
之类的东西与程序执行的任何其他类型的渲染一起存在的地方


本文的“设置信号函数动画”部分很好地解释了reactimate的工作原理。

这里是Yampa的完整Hello World示例

{-# LANGUAGE Arrows #-} import FRP.Yampa main = reactimate initialize input output process initialize = return "Hello World!" input _ = return (0.0, Nothing) output _ x = putStrLn x >> return True process = identity {-#语言箭头{-} 进口玻璃钢。Yampa main=reactimate初始化输入输出过程 初始化=返回“你好,世界!” 输入=返回(0.0,无) 输出x=putStrLn x>>返回真值
process=Identity是否必须收集所有消息并在“actuate::…IO()”中打印它们?是否没有其他方法来创建输出/调试消息?这听起来很难调试…@sisif:如果你只是想要老式的“printf调试”,那就是
debug.Trace
的用途。对于“真实”输出,FRP库的整体思想是将时变、交互式逻辑与IO副作用分开。类似问题: {-# LANGUAGE Arrows #-} import FRP.Yampa main = reactimate initialize input output process initialize = return "Hello World!" input _ = return (0.0, Nothing) output _ x = putStrLn x >> return True process = identity