Haskell/Yampa 中使用箭头语法的简单 putStrLn

问题描述 投票:0回答:2

我将 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!"
haskell frp yampa arrow-abstraction
2个回答
6
投票

我只是在尝试完成 FRP 论文时才使用 Yampa 玩了一下,但根据我的理解,这根本不是你在 Yampa 中使用

IO
的方式。相反,您可以使用
SF a b
函数对
reactimate
进行“动画化”,该函数将
b -> IO ()
类型的函数作为其第二个参数。这个函数是像你的
putStrLn
这样的东西以及程序执行的任何其他类型的渲染的地方。

“Yampa Arcade” 论文的“动画信号函数”部分很好地解释了 reactimate

 的工作原理。


5
投票
这是 Yampa 的完整 Hello World 示例。

{-# 语言箭头 #-} 进口FRP.Yampa main = 重新激活初始化输入输出过程 初始化=返回“Hello World!” 输入 _ = 返回(0.0,无) 输出 _ x = putStrLn x >> 返回 True 过程=身份
    
© www.soinside.com 2019 - 2024. All rights reserved.