Haskell 使用Yampa和Yampa glut获取关键输入

Haskell 使用Yampa和Yampa glut获取关键输入,haskell,glut,freeglut,yampa,Haskell,Glut,Freeglut,Yampa,AFRP的整个主题听起来非常激动人心,我正试图在其中开始我自己的项目。我发现了和,它似乎是一个很好的GLUT绑定(似乎是唯一一个同时在Windows和Linux上运行的图形库) yampaglut源代码附带了一个简单的示例,我复制它来研究它。然后我想扩展它,为关键事件添加一个简单的测试。它的全部来源是,除了第23行和按键功能外,没有什么新功能: keys = proc ev -> do rec e <- keyAction -< ev l

AFRP的整个主题听起来非常激动人心,我正试图在其中开始我自己的项目。我发现了和,它似乎是一个很好的GLUT绑定(似乎是唯一一个同时在Windows和Linux上运行的图形库)

yampaglut
源代码附带了一个简单的示例,我复制它来研究它。然后我想扩展它,为关键事件添加一个简单的测试。它的全部来源是,除了第23行和按键功能外,没有什么新功能:

keys = proc ev -> do
    rec
        e <- keyAction -< ev
        let s = event Nothing (Just . show) e
        res <- identity -< s
    returnA -< res
keys=proc ev->do
记录

过了一段时间,我发现我的想法完全错了。以下是上述“ESC”按钮按下测试的扩展:

simple::Reaction
简单=过程ev->do
R
res <- delay 0.2 Nothing -< s
simple :: Reaction
simple = proc ev -> do
    r <- integral -< 50
    displayAction <- arr (uncurry tag) <<< first redisplay -< (ev, actionIO . display $ r)
    reshapedAction <- arr (fmap (actionIO . reshape)) <<< reshaped -< ev
    returnA -< mconcat [reshapedAction, displayAction]

anim :: Reaction
anim = switch (simple &&& keyPressed) route
    where
        route (Left '\ESC') = arr (\_ -> Event actionExit)
        route _ = simple