0
Я очень смущен о Haskell отступа особенно do
блок с let
и where
Haskell отступы блока «Последнее утверждение в сделай блок должен быть выражением»
я получил следующее сообщение об ошибке на линии action <-
«последний оператор do-block должно быть выражением «Как это исправить?
У меня есть следующее определение
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', поэтому вы получили сообщение об ошибке, которое вы сделали. –