Haskell/Yampa中带有箭头语法的简单putStrLn
我将Haskell与Yampa FRP库一起使用,该库使用arrows语言扩展 如何在SF中进行简单的计算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
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