我正在尝试使用 Haskell 和 Brick 包为基本应用程序构建一个 cli 界面。在我看到的所有示例中(包括文档),handleEvent 函数具有以下类型签名,以便告诉 Brick 在状态更新后继续或停止执行:
AppState -> BrickEvent n e -> EventM n (Next AppState)
但是,对我来说,我的编译器说找不到
Next
(我也不能从它应该在(Brick.Main)中的包中手动导出它)。下面使用的continue
函数也是如此。
最小可重现问题:
Main.hs:
module Main where
import Brick.Main
import Brick.Types
import Graphics.Vty.Input.Events
main :: IO ()
main = do
putStrLn "Hello, World!"
data AppState = AppState deriving (Show, Eq)
handleEvent :: AppState -> BrickEvent n e -> EventM n (Next AppState)
handleEvent s e =
case e of
VtyEvent vtye ->
case vtye of
EvKey (KChar 'q') [] -> halt s
_ -> continue s
_ -> continue s
砖测试.cabal:
cabal-version: 2.4
name: brick-test
version: 0.1.0.0
author: AlexScriba
maintainer: [email protected]
extra-source-files: CHANGELOG.md
executable brick-test
main-is: Main.hs
build-depends:
base ^>=4.14.3.0,
brick >= 1.7,
vty
hs-source-dirs: app
default-language: Haskell2010
我在不同的项目中再次尝试,但似乎在任何一个项目中都不起作用。也尝试过不同版本的砖。
您正在查看过时的文档和示例。查看您正在使用的
brick
版本中的那些。 Next
和 continue
在 1.0 版本中从 brick
中删除。你现在需要这样的类型来代替 handleEvent
:BrickEvent n e -> EventM n AppState ()
。而不是continue s
,你现在做return ()
。