0
私は特にdo
ブロックHaskellのインデントについて非常に混乱しています私はラインaction <-
「最後の文で次のエラーを得ましたdo-blockは式でなければなりません "これをどのように修正すればよいですか?Haskellのインデントブロック「doブロックの最後の文は式でなければなりません」
私はloop
のボディはその名以上をインデントする必要があり、次のように定義さ
type NeovimRead = Neovim r st Text
type NeovimWrite = Text -> Neovim r st()
consumeLoop :: Server -> NeovimRead -> NeovimWrite -> Neovim r st()
consumeLoop server read write = do
status <- liftIO $ takeMVar (status server)
if status == Running
then loop
else liftIO $ putMVar (status server) status
where loop = do
action <- liftIO $ readaction server
case action of
ReadBuffer -> do
text <- read
liftIO $ putMVar (buffer server) text
WriteBuffer -> do
text <- liftIO $ takeMVar (buffer server)
write text
liftIO $ putMVar (status server) Running
consumeLoop server read write
ありがとうございました。しかし、それが理由であるのはなぜですか? – darwinsenior
'do'ブロックの本体が関数の一部でないかのように、そのために空の' do'ブロックを持っているかのようになっていました。 –